Django MTV模式詳解

Mrzhangjwei發表於2016-11-23

出自:http://blog.csdn.net/dbanote/article/details/11338953

 

在正式開始coding之前,我覺得有必要探討下Django的MTV模式,理論和實踐相結合,才能更好的掌握一門技術。
首先說說Web伺服器開發領域裡著名的MVC模式,所謂MVC就是把Web應用分為模型(M),控制器(C)和檢視(V)三層,他們之間以一種外掛式的、鬆耦合的方式連線在一起,模型負責業務物件與資料庫的對映(ORM),檢視負責與使用者的互動(頁面),控制器接受使用者的輸入呼叫模型和檢視完成使用者的請求,其示意圖如下所示:

Django的MTV模式本質上和MVC是一樣的,也是為了各元件間保持鬆耦合關係,只是定義上有些許不同,Django的MTV分別是值:
M 代表模型(Model):負責業務物件和資料庫的關係對映(ORM)。
T 代表模板 (Template):負責如何把頁面展示給使用者(html)。
V 代表檢視(View):負責業務邏輯,並在適當時候呼叫Model和Template。
除了以上三層之外,還需要一個URL分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再呼叫相應的Model和Template,MTV的響應模式如下所示:

1,Web伺服器(中介軟體)收到一個http請求
2,Django在URLconf裡查詢對應的檢視(View)函式來處理http請求
3,檢視函式呼叫相應的資料模型來存取資料、呼叫相應的模板向使用者展示頁面
4,檢視函式處理結束後返回一個http的響應給Web伺服器
5,Web伺服器將響應傳送給客戶端

這種設計模式關鍵的優勢在於各種元件都是鬆耦合的。這樣,每個由 Django驅動的Web應用都有著明確的目的,並且可獨立更改而不影響到其它的部分。 
比如,開發者更改一個應用程式中的 URL 而不用影響到這個程式底層的實現。設計師可以改變 HTML頁面的樣式而不用接觸Python程式碼。
資料庫管理員可以重新命名資料表並且只需更改模型,無需從一大堆檔案中進行查詢和替換。

落到實處,Django的MTV模式相對應的python檔案如下:

 

相關文章