轉:Django MTV 開發模式

來源:互聯網
上載者:User
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 各自的含義:

  • M ,資料存取部分,由django資料庫層處理,本章要講述的內容。

  • V ,選擇顯示哪些資料及要怎樣顯示的部分,由視圖和模板處理。

  • C ,根據使用者輸入委派視圖的部分,由 Django 架構通過按照 URLconf 設定,對給定 URL 調用合適的 python 函數來自行處理。

由於 C 由架構自行處理,而 Django 裡更關注的是模型(Model)、模板(Template)和視圖(Views),Django 也被稱為MTV 架構 。在 MTV 開發模式中:

  • M 代表模型(Model),即資料存取層。該層處理與資料相關的所有事務:如何存取、如何確認有效性、包含哪些行為以及資料之間的關係等。

  • T 代表模板(Template),即表現層。該層處理與表現相關的決定:如何在頁面或其他類型文檔中進行顯示。

  • V 代表視圖(View),即商務邏輯層。該層包含存模數型及調取恰當模板的相關邏輯。你可以把它看作模型與模板之間的橋樑。

如果你熟悉其它的 MVC Web開發架構,比方說 Ruby on Rails,你可能會認為
Django 視圖是控制器,而 Django 模板是視圖。很不幸,這是對 MVC 不同詮釋所引起的錯誤認識。在 Django 對 MVC
的詮釋中,視圖用來描述要展現給使用者的資料;不是資料看起來 怎麼樣 ,而是要呈現 哪些 資料。相比之下,Ruby on Rails 及一些同類架構提倡控制器負責決定向使用者展現哪些資料,而視圖則僅決定 如何 展現資料,而不是展現 哪些 資料。

兩種詮釋中沒有哪個更加正確一些。重要的是要理解底層概念。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.