1.mvc vs mvt
mvc:
m:model數據模型(將數據從數據庫查詢出來,再加工成前臺需要的數據,統稱數據模型層)
c:controller控制層(接受請求,接受請求數據,返回數據的代碼層)
v:視圖層(展示給用戶看的層,比如網頁、app、顯示器等)
mvt:
m:同上
v:同上面的c
t:template模板的意思(比如京東瀏覽任何一個商品的詳情頁都是類似的頁面只是數據不同,就可以寫一個頁面然后填充不同的數據,這個相同的頁面就是模板)
2.虛擬環境
python為了不同項目之間版本不沖突,創建了虛擬環境的概念
問題:如果在一臺電腦上, 想開發多個不同的項目, 需要用到同一個包的不同版本, 如果使用上面的命令, 在同一個目錄下安裝或者更新, 新版本會覆蓋以前的版本, 其它的項目就無法運行了. 解決方案:虛擬環境 作用:虛擬環境可以搭建獨立的python運行環境, 使得單個項目的運行環境與其它項目互不影響.
虛擬環境安裝:
pip install virtualenv pip install virtualenvwrapper 可以使用豆瓣的鏡像 pip install virtualen -i https://pypi.douban.com/simple
創建虛擬環境的命令:
mkvirtualenv -p python3 虛擬環境名稱 例 : mkvirtualenv -p python3 py3_django
進入虛擬環境:
workon py3_django
刪除虛擬環境的命令 :
rmvirtualenv 虛擬環境名稱 刪除的時候需要先退出虛擬環境 先退出:deactivate 再刪除:rmvirtualenv py3_django
3.安裝包
項目的運行需要各種各樣的包,都需要安裝
進入虛擬環境后安裝命令:
pip install 模塊名 -i https://pypi.douban.com/simple(這里使用豆瓣鏡像) 例如: pip install django==2.1.1 -i https://pypi.douban.com/simple 如果不指定版本 pip install django -i https://pypi.douban.com/simple 默認安裝最新版本 卸載: pip uninstall xxxx 查看已安裝列表: pip list
4.創建django項目
django-admin startproject daping(項目名)
使用pycharm打開
為項目配置虛擬環境:
運行項目:
可以使用cmd進入項目目錄運行 也可以點擊pycharm左下角的terminal運行(運行的時候需要進入虛擬環境) python manage.py runserver ip:端口 或: python manage.py runserver 可以不寫IP和端口,默認IP是127.0.0.1,默認端口為8000。 啟動后在頁面訪問 127.0.0.1:8000 有個小火箭就是成功了
5.創建應用
每個項目都會有很多模塊,比如商城有支付、物流等,而支付跟物流顯然都是很多項目可以共用的,
為了達到復用的目的,python提出了應用的概念,把每個模塊單獨創建為一個應用,就可以很方便的達到復用的目的
python manage.py startapp 子應用名稱 tips:如果在其他目錄下可以通過相對路徑找到manage.py 例如:python manage.py startapp pay (在大平的目錄下創建了一個名為pay的應用)
創建了子應用,需要在項目的全局配置中加入子應用
setting----INSTALLED_APPS---找到最后一行添加應用名稱
6.模型ORM
ORM: O:Object實體類 R:relatinal關系型數據庫(mysql) M:mapping 也就是mysql有個表叫student 有id name列 那么在項目中應該有個student類 屬性有id name 就把這個數據庫到項目實體類的映射關系稱為orm
在pay應用的models.py中新建實體類:
from django.db import models # Create your models here. class Teacher(models.Model): name = models.CharField(max_length=10) # 實體類可以繼承Model class Student(models.Model): # 創建字段,字段類型... name = models.CharField(max_length=10) # 外鍵指定學生的老師 teacher = models.ForeignKey(Teacher,on_delete=models.CASCADE)
on_delete=None, # 刪除關聯表中的數據時,當前表與其關聯的field的行為 on_delete=models.CASCADE, # 刪除關聯數據,與之關聯也刪除 on_delete=models.DO_NOTHING, # 刪除關聯數據,什么也不做 on_delete=models.PROTECT, # 刪除關聯數據,引發錯誤ProtectedError # models.ForeignKey("關聯表", on_delete=models.SET_NULL, blank=True, null=True) on_delete=models.SET_NULL, # 刪除關聯數據,與之關聯的值設置為null(前提FK字段需要設置為可空,一對一同理) # models.ForeignKey("關聯表", on_delete=models.SET_DEFAULT, default="默認值") on_delete=models.SET_DEFAULT, # 刪除關聯數據,與之關聯的值設置為默認值(前提FK字段需要設置默認值,一對一同理) on_delete=models.SET, # 刪除關聯數據, a. 與之關聯的值設置為指定值,設置:models.SET(值) b. 與之關聯的值設置為可執行對象的返回值,設置:models.SET(可執行對象)
類型 | 說明 |
---|---|
AutoField | 自動增長的IntegerField,通常不用指定,不指定時Django會自動創建屬性名為id的自動增長屬性 |
BooleanField | 布爾字段,值為True或False |
NullBooleanField | 支持Null、True、False三種值 |
CharField | 字符串,參數max_length表示最大字符個數 |
TextField | 大文本字段,一般超過4000個字符時使用 |
IntegerField | 整數 |
DecimalField | 十進制浮點數, 參數max_digits表示總位數, 參數decimal_places表示小數位數 |
FloatField | 浮點數 |
DateField | 日期, 參數auto_now表示每次保存對象時,自動設置該字段為當前時間,用于"最后一次修改"的時間戳,它總是使用當前日期,默認為False; 參數auto_now_add表示當對象第一次被創建時自動設置當前時間,用于創建的時間戳,它總是使用當前日期,默認為False; 參數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤 |
TimeField | 時間,參數同DateField |
DateTimeField | 日期時間,參數同DateField |
FileField | 上傳文件字段 |
ImageField | 繼承于FileField,對上傳的內容進行校驗,確保是有效的圖片 |
選項 說明
-
null
如果為True,表示允許為空,默認值是False -
blank
如果為True,則該字段允許為空白,默認值是False -
db_column
字段的名稱,如果未指定,則使用屬性的名稱 -
db_index
若值為True, 則在表中會為此字段創建索引,默認值是False -
default
默認 -
primary_key
若為True,則該字段會成為模型的主鍵字段,默認值是False,一般作為AutoField的選項使用 -
unique
如果為True, 這個字段在表中必須有唯一值,默認值是False
修改setting配置文件,找到如下代碼改為自己的mysql鏈接:
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "junge", # 數據庫名字 需要在mysql創建對應的庫 "USER": "root", "PASSWORD": "123456", "HOST": "127.0.0.1", "PORT": "3306", } }
鏈接mysql需要安裝mysqlclient,如下命令安裝
pip install mysqlclient -i https://pypi.douban.com/simple
模型遷移 (建表)
生成遷移文件:根據模型類生成創建表的語句 python manage.py makemigrations tips:會在migrations下面生成0001_initial.py文件,里面有表的創建語句,00001也記錄了版本號,記錄了每次對表的改變 執行遷移:根據第一步生成的語句在數據庫中創建表 python manage.py migrate 執行完畢就會在mysql中生成對應的表
7.后臺管理系統(站點管理)
修改setting.py里面的,語言跟時區
LANGUAGE_CODE = "en-us" TIME_ZONE = "UTC" 修改為: LANGUAGE_CODE = "zh-Hans" TIME_ZONE = "Asia/Shanghai"
后臺管理系統需要賬號登錄,先創建用戶:
python manage.py createsuperuser 按照提示輸入用戶名密碼,郵箱隨便輸入 重置密碼python manager.py changepassword 用戶名
創建好了用戶啟動項目,瀏覽器訪問站點:
python manage.py runserver 啟動項目 登陸站點 :http://127.0.0.1:8000/admin
想要我們創建的實體類被站點管理,需要注冊:
在admin.py中輸入
from django.contrib import admin from .models import Student, Teacher # Register your models here. admin.site.register(Student) admin.site.register(Teacher)
再次訪問:
原文鏈接:https://blog.csdn.net/weixin_39160689/article/details/121336361