Django框架設計創建 Web 應用程序的兩種模式:MTV和MVC
一、MTV框架
MTV(Model Templates Views):
(1)M : model 數據模型,例如 orm中的模型類。
(2)T: templates 模板: 例如 html頁面。
(3)V: view 視圖: 使用函數 例如: CBV 、FBV。
Model(模型) -- Templates(模版) --Views(視圖)
Django是MTV框架。
二、MVC框架:
MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設計創建 Web 應用程序的模式:
- Model(模型)表示應用程序核心(比如數據庫記錄列表(orm))。
- View(視圖)顯示數據(數據庫記錄)。---->對應MTV中的 T
- Controller(控制器)處理輸入(寫入數據庫記錄)。—>對應MTV中的 V
MVC 模式同時提供了對 HTML、CSS 和 JavaScript 的完全控制。
- Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。
通常模型對象負責在數據庫中存取數據。
- View(視圖)是應用程序中處理數據顯示的部分。
通常視圖是依據模型數據創建的(前端網頁)。
- Controller(控制器)是應用程序中處理用戶交互的部分。
通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據(映射,模式渲染等)。
三、Django處理順序
-
wsgi
socket請求處理 -
控制器(django框架本身)
控制用戶輸入,url匹配,通過映射列表將一個請求發送到一個合適的視圖; -
views --Views
python程序,向模型和模板發送(或獲取)數據; -
模型綁定 --Model
數據庫存取數據 -
模板引擎 --Templates
用于將內容與展現分離,描述了數據如何展現(如網頁模板); -
模式渲染 --Views
將模板和數據整合,形成最終網頁; -
控制器(django框架本身)
返回用戶展示。
?四、區別
MVC即模型-視圖-控制器模式,就是為那些需要為同樣的數據提供多個視圖的應用程序而設計的。它很好地實現了數據層與表示層的分離,特別適用于開發與用戶圖形界面有關的應用程序。控制器用來處理用戶命令以及程序事件;模型維護數據并提供數據訪問方法;視圖用于數據的顯示。
MTV即模型-模版-視圖模式,其標準名稱是有爭議的。在MVC的解釋中,視圖描述了展現給用戶的數據,是指所看到的數據,而不是如何看見它。在python中視圖是指對某一特定URL的回調函數,因為回調函數描述了所要展現的數據。模版用于將內容與展現分離。在django中,視圖描述了要展現的數據,而視圖一般轉交給模版。模版描述了數據如何展現。控制器則是指django框架本身,通過URL配置,系統將一個請求發送到一個合適的視圖。
Django中的MTV 是根據MVC模式演變過來的。
使用MVC 或MTV 模式的好處,解耦合。
智能推薦
Django基礎---Web框架、Django的使用
Django基礎—Web框架 MVC和MTV框架 MVC 把Web應用分為模型(M)、視圖(V)、控制器(C)三層,他們之間以一種插件式的,松耦合的方式聯系在一起。模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接收用戶的輸入調用模型和視圖完成用戶的請求。 MTV Django的MTV模式本質上和MVC是一樣的,也是為了各組件間保持松耦合關系,只是定義上有...
c#ASP.NET MVC 4 Web應用程序創建以及默認起始頁配置的由來
1,創建項目 1.1 打開項目,選擇新建 1.2 創建完成后項目結構為 像很多其他語言項目的mvc結構一樣,需要三層,model,view,control,這個是必須的,是整個項目的框架部分,具體除了這三個其他的有什么用,暫且不管,現在需要解決的問題是如何配置頁面的路徑。 2,把程序的默認起始頁改為指定的界面 2.1 打開App_start文件夾 在文件夾中包含一個RouteConfig.cs,這...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
猜你喜歡
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...