Django MTV模式詳解
出自: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。
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伺服器將響應傳送給客戶端
2,Django在URLconf裡查詢對應的檢視(View)函式來處理http請求
3,檢視函式呼叫相應的資料模型來存取資料、呼叫相應的模板向使用者展示頁面
4,檢視函式處理結束後返回一個http的響應給Web伺服器
5,Web伺服器將響應傳送給客戶端
這種設計模式關鍵的優勢在於各種元件都是鬆耦合的。這樣,每個由 Django驅動的Web應用都有著明確的目的,並且可獨立更改而不影響到其它的部分。
比如,開發者更改一個應用程式中的 URL 而不用影響到這個程式底層的實現。設計師可以改變 HTML頁面的樣式而不用接觸Python程式碼。
資料庫管理員可以重新命名資料表並且只需更改模型,無需從一大堆檔案中進行查詢和替換。
比如,開發者更改一個應用程式中的 URL 而不用影響到這個程式底層的實現。設計師可以改變 HTML頁面的樣式而不用接觸Python程式碼。
資料庫管理員可以重新命名資料表並且只需更改模型,無需從一大堆檔案中進行查詢和替換。
落到實處,Django的MTV模式相對應的python檔案如下:
相關文章
- Django之MTV實戰(2)Django
- [Django之框架設計模型(MTV與MVC)、Ajax]Django框架模型MVC
- dya49:django:wsgrief&模板渲染Jinjia2&django的MTV/MVC框架&建立/啟動一個django專案DjangoMVC框架
- 代理模式詳解模式
- Django序列化元件Serializers詳解Django元件
- Django web框架-----url path name詳解DjangoWeb框架
- Django(58)viewsets檢視集詳解DjangoView
- 設計模式 - 代理模式詳解設計模式
- 設計模式:代理模式詳解設計模式
- iPhone放大模式詳解iPhone模式
- 設計模式詳解設計模式
- Scala模式匹配詳解模式
- 前端路由模式詳解前端路由模式
- Django model select的各種用法詳解Django
- 設計模式之單例模式詳解設計模式單例
- 設計模式【4】-- 建造者模式詳解設計模式
- iOS設計模式詳解iOS設計模式
- linux網路模式詳解Linux模式
- KMP字串模式匹配詳解KMP字串模式
- Django資料庫類庫MySQLdb使用詳解Django資料庫MySql
- Django(41)詳解非同步任務框架CeleryDjango非同步框架
- Django基礎教程之配置檔案詳解Django
- MTV和MVC的區別MVC
- ShardingSphere Mode 模式新起航:執行模式詳解模式
- Django模型驗證器詳解和原始碼分析Django模型原始碼
- Django之使用者認證模組詳解Django
- Docker的網路模式詳解Docker模式
- c#中代理模式詳解C#模式
- c#中命令模式詳解C#模式
- c#橋接模式詳解C#橋接模式
- c#享元模式詳解C#模式
- c#組合模式詳解C#模式
- 四種設計模式詳解設計模式
- 詳解模板方法設計模式設計模式
- Javascript設計模式Revealing Module 揭示模式單例模式詳解JavaScript設計模式單例
- vue-router的hash模式和history模式詳解Vue模式
- 行為型設計模式 - 狀態模式詳解設計模式
- 【經典案例】Python詳解設計模式:策略模式Python設計模式
- Python 中的設計模式詳解之:策略模式Python設計模式