1 MVC模式
MVC就是把Web應(yīng)用分為模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、松耦合的方式連接在一起:
1.1 MVC分別是指:
- 模型負(fù)責(zé)業(yè)務(wù)對象與數(shù)據(jù)庫的映射(ORM)
- 視圖負(fù)責(zé)與用戶的交互(頁面)
- 控制器接受用戶的輸入調(diào)用模型和視圖完成用戶的請求
1.2 其示意圖如下所示:
MVC
2 Django中的MTV模型
Django的MTV模式本質(zhì)上和MVC是一樣的,也是為了各組件間保持松耦合關(guān)系,只是定義上有些許不同。
2.1 Django的MTV分別是指:
- M 代表模型(Model):負(fù)責(zé)業(yè)務(wù)對象和數(shù)據(jù)庫的關(guān)系映射(ORM)。
- T 代表模板 (Template):負(fù)責(zé)如何把頁面展示給用戶(html)。
- V 代表視圖(View):負(fù)責(zé)業(yè)務(wù)邏輯,并在適當(dāng)時候調(diào)用Model和Template。
2.2 其示意圖如下所示:
Paste_Image.png
3 URL分發(fā)器
除了MTV三層之外,還需要一個URL分發(fā)器,它的作用是將一個個URL的頁面請求分發(fā)給不同的View處理,View再調(diào)用相應(yīng)的Model和Template,MTV的響應(yīng)模式如下所示:
3.1 URL分發(fā)器原理如下
URL分發(fā)器
- Web服務(wù)器(中間件)收到一個http請求
- Django在URLconf里查找對應(yīng)的視圖(View)函數(shù)來處理http請求
- 視圖函數(shù)調(diào)用相應(yīng)的數(shù)據(jù)模型來存取數(shù)據(jù)、調(diào)用相應(yīng)的模板向用戶展示頁面
- 視圖函數(shù)處理結(jié)束后返回一個http的響應(yīng)給Web服務(wù)器
- Web服務(wù)器將響應(yīng)發(fā)送給客戶端
總結(jié)
這種設(shè)計模式關(guān)鍵的優(yōu)勢在于各種組件都是松耦合的。
這樣,每個由 Django驅(qū)動的Web應(yīng)用都有著明確的目的,并且可獨(dú)立更改而不影響到其它的部分。
比如,開發(fā)者更改一個應(yīng)用程序中的 URL 而不用影響到這個程序底層的實(shí)現(xiàn)。
設(shè)計師可以改變 HTML頁面的樣式而不用接觸Python代碼。
數(shù)據(jù)庫管理員可以重新命名數(shù)據(jù)表并且只需更改模型,無需從一大堆文件中進(jìn)行查找和替換。