什么是Django
- Django是一個(gè)基于Python的高級(jí)web開發(fā)框架;它能讓開發(fā)人員進(jìn)行高效且快速的開發(fā)定罢,高度集成吼鱼,免費(fèi)且開源
Django的優(yōu)點(diǎn)
- DRY韩脑,強(qiáng)調(diào)快速開發(fā)
- 優(yōu)雅的URL設(shè)計(jì)
- 自帶強(qiáng)大后臺(tái)
- 強(qiáng)大的數(shù)據(jù)庫(kù)功能
- 緩存系統(tǒng)
Django的缺點(diǎn)
- 系統(tǒng)的耦合度太高
- 模板語言的支持相對(duì)比較簡(jiǎn)單
Django的MTV架構(gòu)
- Model層,和MVC中的model層一樣见坑,負(fù)責(zé)應(yīng)用程序的數(shù)據(jù)以及數(shù)據(jù)的處理
- Template層嚷掠,根據(jù)需求展示Model層的數(shù)據(jù),使用Django的Template的語法
-
View層荞驴,類似于MVC的Controller不皆,負(fù)責(zé)應(yīng)用邏輯的控制
環(huán)境搭建
- Python安裝:https://www.python.org/
- Django安裝:https://www.djangoproject.com/download/
- 開發(fā)工具Pycharm安裝:https://www.jetbrains.com/pycharm
Django的典型業(yè)務(wù)流程
創(chuàng)建工程
-django-admin.py startproject [proj name]
- 運(yùn)行開發(fā)服務(wù)器
在myblog目錄下,輸入:
python manage.py runserver
然后在瀏覽器中輸入:
127.0.0.1:8000
Django項(xiàng)目的目錄結(jié)構(gòu)
Manage.py
- 執(zhí)行
python manage.py
來查看所有的命令 - 與項(xiàng)目進(jìn)行交互的命令行工具集的入口項(xiàng)目管理器
- 支持多個(gè)命令
—?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)
—啟動(dòng)服務(wù)runserver
—等等 - 支持?jǐn)U展自定義的命令
Setting.py
- 整個(gè)項(xiàng)目的核心配置文件
—數(shù)據(jù)庫(kù)的連接信息
—緩存配置
—Session配置
—靜態(tài)文件配置
—用戶自定義的配置信息
url.py
- Django項(xiàng)目中所有地址(頁(yè)面)都需要我們?nèi)ヅ渲闷銾RL
_init.py
- Python中聲明模塊的文件,內(nèi)容默認(rèn)為空
Wsgi.py
- 定義:Python web server gateway interface 熊楼,Python服務(wù)器網(wǎng)關(guān)接口
- Python有許多的 Web 框架霹娄,而同時(shí)又有許多的 Web 服務(wù)器(Apache, Nginx, Gunicorn等),框架和Web服務(wù)器之間需要進(jìn)行通信鲫骗,如果在設(shè)計(jì)時(shí)它們之間不可以相互匹配的犬耻,那么選擇了一個(gè)框架就會(huì)限制對(duì) Web 服務(wù)器的選擇。
- 為確敝刺可以在不修改Web服務(wù)器代碼或網(wǎng)絡(luò)框架代碼的前提下枕磁,使用自己選擇的服務(wù)器,并且匹配多個(gè)不同的網(wǎng)絡(luò)框架术吝,對(duì)python來說透典,設(shè)計(jì)WSGI來解決。
-
WSGI顿苇,讓開發(fā)者可以將 Web 框架與 Web 服務(wù)器的選擇分隔開來,不再相互限制税弃〖退辏可以將不同的 Web 服務(wù)器與Web框架進(jìn)行混合搭配,選擇滿足自己需求的組合则果。
Django的項(xiàng)目中的App
一個(gè)Django項(xiàng)目有多個(gè)App組成
APP
— 一個(gè)App對(duì)應(yīng)一組URL
— 每個(gè)App是一個(gè)獨(dú)立的目錄幔翰,每個(gè)目錄由一個(gè)model.py,view.py和test.py,[URL.py]組成
— model.py是應(yīng)用所需要的數(shù)據(jù)定義
— view.py是存放App應(yīng)用邏輯的每個(gè)App必須被注冊(cè)到settings.py的INSTALLED_APP中
Django自帶很多App漩氨,提供了很多方便的功能
Django.contrib.auth,用戶認(rèn)證
Django.contrib.admin,后臺(tái)管理應(yīng)用
…
應(yīng)用程序目錄結(jié)構(gòu)
- migrations
- init.py
- admin.py
- apps.py
- models.py
- test.py
- view.py
URL分發(fā)和視圖
- Django內(nèi)部維護(hù)了一張URL和視圖的映射表遗增,當(dāng)請(qǐng)求到來的時(shí)候叫惊,選擇匹配URL的視圖函數(shù)來處理請(qǐng)求
編寫路由
-
路由都在urls文件里,它將瀏覽器輸入的url映射到相應(yīng)的業(yè)務(wù)處理邏輯做修。
View.py
- 執(zhí)行響應(yīng)的代碼所在模塊
- 代碼邏輯處理的主要地點(diǎn)
- 項(xiàng)目中大部分代碼均在這里編寫
編寫業(yè)務(wù)邏輯
Django的模板語言
- 用兩個(gè)大括號(hào)包圍的表示變量
- 用一個(gè)大括號(hào)和百分號(hào)包圍的表示模板標(biāo)簽
—IF判斷
—FOR循環(huán) - 支持自定義標(biāo)簽和過濾器
模板標(biāo)簽
- 標(biāo)簽必須成對(duì)出現(xiàn)并且關(guān)閉
{% IF %} … {% END IF %}
{% FOR %} … {% END FOR %}
返回HTML文件
修改Settings文件
-
為了讓django知道html文件在哪里霍狰,需要修改settings文件的相應(yīng)內(nèi)容。但默認(rèn)情況下饰及,它正好適用蔗坯,無需修改。
靜態(tài)文件
-
我們已經(jīng)可以將html文件返還給用戶了燎含,但是還不夠宾濒,前端三大塊,html屏箍、css绘梦、js還有各種插件,它們齊全才是一個(gè)完整的頁(yè)面赴魁。在django中卸奉,一般將靜態(tài)文件放在static目錄中。接下來尚粘,在mysite中新建個(gè)static目錄择卦。
models.py
- 數(shù)據(jù)模塊
- 使用ORM框架
ORM
Model類
每一個(gè)Model類表示一張表,生成的數(shù)據(jù)庫(kù)表的名字默認(rèn)是
APP的名字_類的名字
每個(gè)Model類里面都有多個(gè)Filed的Instance變量
Field對(duì)象
- 一個(gè)Field變量表示一個(gè)表中的字段
- Django支持大量的字段類型郎嫁,例如 TextField, IntegerField等等
使用數(shù)據(jù)庫(kù)
- django通過自帶的ORM框架操作數(shù)據(jù)庫(kù)秉继,并且自帶輕量級(jí)的sqlite3數(shù)據(jù)庫(kù)。下面我們來看一看:
-
在setting中注冊(cè)APP
-
在settings配置數(shù)據(jù)庫(kù)的相關(guān)參數(shù)
修改model.py
-
創(chuàng)建用戶名和密碼兩個(gè)字段
創(chuàng)建數(shù)據(jù)庫(kù)的表
-
python manage.py makemigrations
-
python manage.py migrate
tests.py
- 自動(dòng)化測(cè)試模塊
- Django提供了自動(dòng)測(cè)試功能
- 在這里編寫測(cè)試腳本