MVC: M為model模塊。V為View,視圖。C為Controller,控制器。
MVT:M為model模塊。v為view視圖。T為模板。
創(chuàng)建虛擬環(huán)境:mkvirtualenv -p python3 虛擬環(huán)境名稱
查看虛擬環(huán)境:workon
使用虛擬環(huán)境:workon 虛擬環(huán)境名
刪除虛擬環(huán)境:rmvirtualenv 虛擬環(huán)境名稱
退出虛擬環(huán)境:deactivate
創(chuàng)建項目:django-admin startproject 項目名稱
settings.py是項目的整體配置文件。
urls.py是項目的URL配置文件。
創(chuàng)建應(yīng)用:python manage.py startapp 應(yīng)用名稱
運行:python manage.py runserver 端口號
ORM框架:O就是object,對象.R就是relation關(guān)系數(shù)據(jù)庫,M就是Mapping,映射. django中內(nèi)嵌了ORM框架,不需要直接面向數(shù)據(jù)庫編程,而是定義模型類,通過模型類和對象完成數(shù)據(jù)表的增刪改查操作。
生成遷移文件:python manage.py makemigrations
執(zhí)行遷移文件:python manage.py migrate
設(shè)置界面:
打開set文件
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
創(chuàng)建管理員 :
python manage.py createsuperuser
127.0.0.1:8000/admin
url規(guī)則使用正則表達式定義。
視圖就是在views.py中定義的視圖函數(shù)。
在模板中輸出變量語法如下,變量可能是從視圖中傳遞過來的,也可能是在模板中定義的。{{變量名}}
在模板中編寫代碼段語法如下:{%代碼段%}
定義模板代碼:
<html>
<head>
<title>圖書列表</title>
</head>
<body>
<h1>{{title}}</h1>
{%for i in list%}
{{i}}
{%endfor%}
</body>
</html>
url(r'^$', views.index)配置詳細頁url,\d+表示多個數(shù)字,小括號用于取值
ORM:是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。
屬性命名限制:
不能是python的保留關(guān)鍵字。
不允許使用連續(xù)的下劃線,這是由django的查詢方式?jīng)Q定的,在后面會詳細講解查詢。
定義屬性時需要指定字段類型,通過字段類型的參數(shù)指定選項,語法如下:
BooleanField:布爾字段,值為True或False。
NullBooleanField:支持Null、True、False三種值。
CharField(max_length=字符長度):字符串。
參數(shù)max_length表示最大字符個數(shù)。
TextField:大文本字段,一般超過4000個字符時使用。
IntegerField:整數(shù)。
DecimalField(max_digits=None, decimal_places=None):十進制浮點數(shù)。
參數(shù)max_digits表示總位數(shù)。
參數(shù)decimal_places表示小數(shù)位數(shù)。
FloatField:浮點數(shù)。
DateField[auto_now=False, auto_now_add=False]):日期。
參數(shù)auto_now表示每次保存對象時,自動設(shè)置該字段為當前時間,用于"最后一次修改"的時間戳,它總是使用當前日期,默認為false。
參數(shù)auto_now_add表示當對象第一次被創(chuàng)建時自動設(shè)置當前時間,用于創(chuàng)建的時間戳,它總是使用當前日期,默認為false。
參數(shù)auto_now_add和auto_now是相互排斥的,組合將會發(fā)生錯誤。
TimeField:時間,參數(shù)同DateField。
DateTimeField:日期時間,參數(shù)同DateField。
FileField:上傳文件字段。
關(guān)系型數(shù)據(jù)庫的關(guān)系包括三種類型:
ForeignKey:一對多,將字段定義在多的一端中。
ManyToManyField:多對多,將字段定義在任意一端中。
OneToOneField:一對一,將字段定義在任意一端中。BookInfo,HeroInfo
Django中也能實現(xiàn)類似于join查詢
一模型類關(guān)聯(lián)屬性名一模型類屬性名條件運算符=值+