Django MTV 開發模式
分類:
python
2009-04-19 11:44
462人閱讀
評論(0)
收藏
舉報MTV 開發模式
在鑽研更多代碼之前,讓我們先花點時間考慮下 Django 資料驅動 Web 應用程式的總體設計。
我們在前面章節提到過,Django
的設計鼓勵松耦合及對應用程式中不同部分的嚴格分割。遵循這個理念的話,要想修改應用的某部分而不影響其它部分就比較容易了。在視圖函數中,我們已經討論
了通過模板系統把商務邏輯和表現邏輯分隔開的重要性。在資料庫層中,我們對資料訪問邏輯也應用了同樣的理念。
把資料存取邏輯、商務邏輯和表現邏輯組合在一起的概念有時被稱為軟體架構的 Model-View-Controller (MVC)模式。在這個模式中, Model 代表資料存取層,View 代表的是系統中選擇顯示什麼和怎麼顯示的部分,Controller 指的是系統中根據使用者輸入並視需要訪問模型,以決定使用哪個視圖的那部分。
為什麼用縮寫?
像 MVC 這樣的明確定義模式的主要用於改善開發人員之間的溝通。與其告訴同事:“讓我們對資料存取進行抽象,用單獨一層負責資料顯示,然後在中間放置一層來進行控制”,還不如利用通用的詞彙告訴他們:“讓我們在這裡使用 MVC 模式吧”。
Django 緊緊地遵循這種 MVC 模式,可以稱得上是一種 MVC 架構。以下是 Django 中 M、V 和 C 各自的含義:
由於 C 由架構自行處理,而 Django 裡更關注的是模型(Model)、模板(Template)和視圖(Views),Django 也被稱為MTV 架構 。在 MTV 開發模式中:
如果你熟悉其它的 MVC Web開發架構,比方說 Ruby on Rails,你可能會認為
Django 視圖是控制器,而 Django 模板是視圖。很不幸,這是對 MVC 不同詮釋所引起的錯誤認識。在 Django 對 MVC
的詮釋中,視圖用來描述要展現給使用者的資料;不是資料看起來 怎麼樣 ,而是要呈現 哪些 資料。相比之下,Ruby on Rails 及一些同類架構提倡控制器負責決定向使用者展現哪些資料,而視圖則僅決定 如何 展現資料,而不是展現 哪些 資料。
兩種詮釋中沒有哪個更加正確一些。重要的是要理解底層概念。