django:MTV模式的詳解

原帖地址:http://blog.csdn.net/dbanote/article/details/11338953

在正式開始coding之前,我覺得有必要探討下Django的MTV模式,理論和實踐相結(jié)合,才能更好的掌握一門技術(shù)。

首先說說Web服務(wù)器開發(fā)領(lǐng)域里著名的MVC模式,所謂MVC就是把Web應(yīng)用分為模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、松耦合的方式連接在一起,模型負(fù)責(zé)業(yè)務(wù)對象與數(shù)據(jù)庫的映射(ORM),視圖負(fù)責(zé)與用戶的交互(頁面),控制器接受用戶的輸入調(diào)用模型和視圖完成用戶的請求,其示意圖如下所示:

image

Django的MTV模式本質(zhì)上和MVC是一樣的,也是為了各組件間保持松耦合關(guān)系,只是定義上有些許不同,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。

除了以上三層之外,還需要一個URL分發(fā)器,它的作用是將一個個URL的頁面請求分發(fā)給不同的View處理,View再調(diào)用相應(yīng)的Model和Template,MTV的響應(yīng)模式如下所示:

image

1,Web服務(wù)器(中間件)收到一個http請求
2,Django在URLconf里查找對應(yīng)的視圖(View)函數(shù)來處理http請求
3,視圖函數(shù)調(diào)用相應(yīng)的數(shù)據(jù)模型來存取數(shù)據(jù)、調(diào)用相應(yīng)的模板向用戶展示頁面
4,視圖函數(shù)處理結(jié)束后返回一個http的響應(yīng)給Web服務(wù)器
5,Web服務(wù)器將響應(yīng)發(fā)送給客戶端

這種設(shè)計模式關(guān)鍵的優(yōu)勢在于各種組件都是松耦合的。這樣,每個由 Django驅(qū)動的Web應(yīng)用都有著明確的目的,并且可獨(dú)立更改而不影響到其它的部分。
比如,開發(fā)者更改一個應(yīng)用程序中的 URL 而不用影響到這個程序底層的實現(xiàn)。設(shè)計師可以改變 HTML頁面的樣式而不用接觸Python代碼。
數(shù)據(jù)庫管理員可以重新命名數(shù)據(jù)表并且只需更改模型,無需從一大堆文件中進(jìn)行查找和替換。

落到實處,Django的MTV模式相對應(yīng)的python文件如下:

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容