MTV: Django眼中的MVC

URLconf+MTV:Django眼中的MVC

MVC是眾所周知的模式,即:將應用程序分解成三個組成部分:model(模型),view(視圖),和 controller(控制 器)。其中:
???????????? M 管理應用程序的狀態(通常存儲到數據庫中),并約束改變狀態的行為(或者叫做“業務規則”)。
???????????? C 接受外部用戶的操作,根據操作訪問模型獲取數據,并調用“視圖”顯示這些數據。控制器是將“模型”和“視圖”隔離,并成為二者之間的聯系紐帶。
???????????? V 負責把數據格式化后呈現給用戶。

在《Agile Web Development with Rails》中有這樣一張圖對MVC模式進行了很好的解釋:

?

Django也是一個MVC框架。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式:

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

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

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

需要注意的是,不能簡單的把 Django 視圖認為是MVC控制器,把 Django 模板認為MVC視圖。?
區別在于:
???? Django 視圖 不處理用戶輸入,而僅僅決定要展現哪些數據給用戶;
???? Django 模板 僅僅決定如何展現Django視圖指定的數據。


或者說, Django將MVC中的視圖進一步分解為 Django視圖 和 Django模板兩個部分,分別決定 “展現哪些數據” 和 “如何展現”,使得Django的模板可以根據需要隨時替換,而不僅僅限制于內置的模板。

?

至于MVC控制器部分,由Django框架的URLconf來實現。URLconf設計非常巧妙,其機制是使用正則表達式匹配URL,然后調用合適的Python函數。雖然一開始有些不習慣,但是你很快就會喜歡上它,因為URLconf對于URL的規則沒有任何限制,你完全可以設計成任意的URL風格,不管是傳統的,RESTful的,或者是另類的。

轉載于:https://www.cnblogs.com/s502/archive/2013/05/09/3069295.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259773.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

createbitmap導致的內存泄漏如何處理_C++ 如何避免內存泄漏,一篇就夠

前言近年來,討論 C 的人越來越少了,一方面是由于像 Python,Go 等優秀的語言的流行,另一方面,大家也越來越明白一個道理,并不是所有的場景都必須使用 C 進行開發。Python 可以應付大部分對性能要求不高的場景…

Visio繪制功能分解圖

為什么要繪制功能分解圖? 對于編程人員來說,具體分配任務的時候,必須知道自己要做什么,必須了解系統的大體框架。功能分解圖可以幫助我們理清程序的框架,便于大局觀的掌握。 用Visio2010創建功能分解圖 1、選擇模版 2、…

Heka:Go編寫,來自Mozilla,高效、靈活的插件式數據挖掘工具(轉)

轉自:http://www.csdn.net/article/2013-05-02/2815116-introduce-from-mozilla-heka-go摘要:一直崇尚開源的Mozilla近日釋放了Heka測試版——插件架構,Go編寫。在支持使用Go擴展功能的同時,還通過允許“Sandboxed Filters”提供了…

cocos2d學習筆記2——學習資源

1. 視頻 找了好幾個視頻,有一些講得好的文件資源沒有,后來終于找到一個講得不錯還有文件資源的,還有高清下載地址,雖然是2.2版本的,但是確實能學到不少東西,對用cocos2d做游戲有了基本的印象,對…

深究標準IO的緩存

前言 在最近看了APUE的標準IO部分之后感覺對標準IO的緩存太模糊,沒有搞明白,APUE中關于緩存的部分一筆帶過,沒有深究緩存的實現原理,這樣一本被吹上天的書為什么不講透徹呢?今天早上爬起來趕緊找了幾篇文章看看&#x…

環境變量_配置JAVA環境變量

本文標識 : J00001本文編輯 : YiKi編程工具 : IDEA閱讀時長 : 3分鐘什么是環境變量?環境變量是在操作系統中一個具有特定名字的對象, 它包含了一個或者多個應用程序所將使用到的信息。為什么要配置環境變量?為了方便在控制臺編譯和運行java程序,不…

GotFocus和PreviewLeftButtonDown事件

當TextBox獲得焦點后,其中的文字會被全選。通過GotFocus和PreviewLeftButtonDown事件,就可以模擬上述行為。 如果用戶只是用鍵盤操作,GotFocus事件就足夠了。 如果使用鼠標操作,就要用到2個事件了。TextBox會將光標放在鼠標單擊的…

模式主節點ORACLE DG介紹(物理無實例)

在本文中,我們主要介紹模式主節點的內容,自我感覺有個不錯的建議和大家分享下 DG的三種模式: 硬件以及操縱系統需求: 每日一道理 流逝的日子像一片片凋零的枯葉與花瓣,漸去漸遠的是青春的純情與浪漫。不記得曾有多少雨飄在胸前風響在耳畔&…

分布式消息隊列 Kafka

分布式消息隊列 Kafka 2016-02-25 杜亦舒Kafka是一個高吞吐量的、分布式的消息系統,由Linkedin開發,開發語言為scala具有高吞吐、可擴展、分布式等特點 適用場景 活動數據統計活動數據包括頁面訪問量(Page View)、被查看內容方面的…

漫游飛行_手機“飛行模式”為何沒被淘汰?內行人坦言:其實是你不會用!

隨著科技的不斷創新,目前市面上出現的手機款式多種多樣,品牌也非常多,有華為、蘋果、三星和小米等等。手機的屏幕也是五花八門,有劉海屏、水滴全面屏等,這些屏幕之間都各有不同。而且手機的更新換代速度很快&#xff0…

multiselect多選下拉框

具體實現 <input type"hidden" id"q_dueDay" name"q_dueDay" value"${baseQueryBean.q_dueDay}">//這個為隱藏域后臺直接使用這個為參數 <select id"example" name"example" multiple"multiple&qu…

序列元素IT面試題——判斷合法出棧序列

本文純屬個人見解&#xff0c;是對前面學習的總結&#xff0c;如有描述不正確的地方還請高手指正~ 在技巧筆試口試上&#xff0c;我們常常會碰到這樣一類題型&#xff0c;如給你一個入棧序列&#xff0c;然后再讓你判斷幾個序列是否有可能為它的出棧序列&#xff0c;如&#xf…

scikit-learn點滴

scikit-learn點滴 scikit-learn是非常漂亮的一個機器學習庫,在某些時候,使用這些庫能夠大量的節省你的時間,至少,我們用Python,應該是很難寫出速度快如斯的代碼的. scikit-learn官方出了一些文檔,但是個人覺得,它的文檔很多東西都沒有講清楚,它說算法原理的時候,只是描述一下,除…

background image

http://www.ajaxblender.com/bgstretcher-2-jquery-stretch-background-plugin-updated.html http://blog.dvxj.com/pandola/jQuery_bgStretcher.html 轉載于:https://www.cnblogs.com/eebb/p/4077231.html

怎樣搭建Android開發平臺(轉)

Android是基于Linux內核的軟件平臺和操作系統&#xff0c;是Google在2007年11月5日公布的手機系統平臺&#xff0c;早期由Google開發&#xff0c;后由開放手機聯盟&#xff08;Open Handset Alliance&#xff09;開發。 它采用了軟件堆層&#xff08;software stack&#xff0c…

mvn deploy 推送到私有倉庫,注意當前日期

由于更改了本機系統時間到過去的一個時間&#xff0c;導致mvn deploy推送到私有倉庫后&#xff0c;該更新的jar包時間戳比較舊&#xff0c;客戶端不能更新得到新的jar包。轉載于:https://www.cnblogs.com/silva/p/6264458.html

我的世界1.7.10java32位_我的世界1.7.10中文版

不知道怎么下載&#xff1f;點我游戲介紹《我的世界1.7.10》中整個世界由各種方塊構成&#xff0c;玩家可以破壞它們&#xff0c;也可以用自己的方塊隨意建造東西。為了在游戲里生存和發展&#xff0c;玩家需要通過伐木、挖礦、捕獵等方式獲取資源&#xff0c;并通過合成系統打…

python程序在函數內執行得更快

http://www.cnblogs.com/nepaul/archive/2012/07/15/2592179.html 為什么Python程序在函數內執行得更快&#xff1f;&#xff08;來源StackOverflow&#xff09; 考慮下面的代碼&#xff0c;一個在函數體內&#xff0c;一個是全局的代碼。 函數內的代碼執行效率為 1.8s 1234def…

USER_EXIT

1、md04的用戶出口 M61X0002 2、me21n/me22n的用戶出口 MM06E005 MBCF0002 3、migo 的用戶出口&#xff1a; MBCF0009 MBCF0002-> EXIT_SAPMM07M_001 4、co11n 的用戶出口&#xff0c;發料不足不允許報工時 EXIT_SAPLCORF_104 查找用戶出口的函數&#xff1a; MODX_FUNCTION…

subject.login(token)是如何確認賬號密碼的_教你如何刪除、關閉、注銷微信小程序...

微信小程序是我們日常生活中經常會接觸到的工具&#xff0c;打開小程序后&#xff0c;它就會留在我們微信的”“發現-小程序”欄。很多人并不知道該如何刪除、關閉小程序&#xff0c;所以今天就跟大家科普下相關問題。1.如何刪除小程序首先&#xff0c;打開微信界面&#xff0c…