Django Web 應用的總體設計


Django  Web 應用的總體設計

       在鑽研更多代碼之前,讓我們先花點時間考慮下 Django 數據驅動 Web 應用的總體設計。Django 的設計鼓勵鬆耦合及對應用程序中不同部分的嚴格分割。 遵循這個理念的話,要想修改應用的某部分而不影響其它部分就比較容易了。 在視圖函數中,我們已經討論了通過模板系統把業務邏輯和表現邏輯分隔開的重要性。 在數據庫層中,我們對數據訪問邏輯也應用了同樣的理念。把數據存取邏輯、業務邏輯和表現邏輯組合在一起的概念有時被稱爲軟件架構的 Model-View-Controller(MVC)模式。 在這個模式中, Model 代表數據存取層,View 代表的是系統中選擇顯示什麼和怎麼顯示的部分,Controller 指的是系統中根據用戶輸入並視需要訪問模型,以決定使用哪個視圖的那部分。

爲什麼用縮寫?
像 MVC 這樣的明確定義模式的主要用於改善開發人員之間的溝通。 比起告訴同事,“讓我們採用抽象的數據存取方式,然後單獨劃分一層來顯示數據,並且在中間加上一個控制它的層”,一個通用的說法會讓你收益,你只需要說:“我們在這裏使用MVC模式吧”.
Django 緊緊地遵循這種 MVC 模式,可以稱得上是一種 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含義:
     (1)     M:   數據存取部分,由django數據庫層處理。
     (2)     V :  選擇顯示哪些數據要顯示以及怎樣顯示的部分,由視圖和模板處理。
     (3)     C :  根據用戶輸入委派視圖的部分,由 Django 框架根據 URLconf 設置,對給定 URL 調用適當的Python 函數。

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

      (1)   M 代表模型(Model),即數據存取層。 該層處理與數據相關的所有事務: 如何存取、如何驗證有效性、包含哪些行爲以及數據之間的關係等。

      (2)   T 代表模板(Template),即表現層。 該層處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。
      (3)   V 代表視圖(View),即業務邏輯層。 該層包含存取模型及調取恰當模板的相關邏輯。 你可以把它看作模型與模板之間的橋樑。

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

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章