在讀完《初識Django:簡單Web應(yīng)用示例》(以下簡稱《示例》)后,你或許學(xué)會了如何使用Django框架來構(gòu)建應(yīng)用,但為什么要這樣來做?其背后的原理是什么?你或許有些懵,本文將帶你理解:
lDjango請求處理流程;
lDjango設(shè)計方法。
一、Django請求處理流程
1.項目與應(yīng)用代碼詳單
《示例》中我們所構(gòu)建的Web應(yīng)用代碼文件,分為項目WebPro和應(yīng)用WebApp,詳情如下:
2.Django請求處理流程
打開瀏覽器,輸入127.0.0.1:8000/hello-post,瀏覽器將請求發(fā)送到127.0.0.1服務(wù)器(本機(jī))8000端口。
(1).根據(jù)hello_post查詢對應(yīng)的處理函數(shù):Django框架加載urls.py,代碼行url(r'^hello-post$', views.hello_post)標(biāo)識hello-post的請求由views.hello_post函數(shù)處理。
(2).業(yè)務(wù)處理:views.py的Hello_post函數(shù)查詢數(shù)據(jù)庫的title值,并將Hello與其拼接成ctx[‘wname’],將其發(fā)送給hello.html。
(3).頁面顯示:Hello.html將wname值進(jìn)行替換,生成可展示的視圖。
(4).請求流程以頁面正確顯示結(jié)束,這里需要關(guān)注的是本項目中事先定義了Model,該模型的定義在models.py文件中。
二、 Django設(shè)計原理
通過上面的分析,我們大致可以體會到:使用models.py定義數(shù)據(jù)模型,使用views.py編寫后臺業(yè)務(wù)處理邏輯,使用templates/hello.html展示可視化信息。簡單地說,從前端頁面請求到后臺數(shù)據(jù)的處理再到數(shù)據(jù)的頁面顯示,可以描述成model-view-template,即M-V-T。
事實(shí)上,Web框架經(jīng)常地采用MVC(Model View Controller)設(shè)計方法,該方法是在研究Smalltalk-80期間設(shè)計的,采用一種將業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼。
lM-Model:封裝數(shù)據(jù)和數(shù)據(jù)的處理方法,用于業(yè)務(wù)的數(shù)據(jù)建模。
lV-View:定義Web頁面的視圖,用于和用戶交互。
lC-Controller:定義用戶頁面對用戶輸入的響應(yīng)方式,用于控制Web應(yīng)用的流程。
現(xiàn)在再回過來看Django的MVT模式,與上述的MVC的映射關(guān)系:
Web應(yīng)用框架 | Django |
---|---|
M-Model | M-Model |
V-View | T-Template |
C-Controller | V-View |
通過上面的分析,Django項目與應(yīng)用構(gòu)建的原理便清晰可見了。
-
數(shù)據(jù)模型
+關(guān)注
關(guān)注
0文章
52瀏覽量
10171 -
可視化
+關(guān)注
關(guān)注
1文章
1259瀏覽量
21812 -
Models
+關(guān)注
關(guān)注
0文章
74瀏覽量
21198
發(fā)布評論請先 登錄
Gradle構(gòu)建的多模塊Spring Boot項目

如何使項目構(gòu)建輸出到lib文件?
8086工程構(gòu)建項目時報錯
如何使用Keil MDK-ARM編譯器構(gòu)建項目
如何使用GitHub構(gòu)建STM32CubeIDE項目?
使用STM32CubeIDE構(gòu)建項目圖標(biāo)進(jìn)行構(gòu)建時,鏈接失敗的原因是什么?
MIMXRT106S項目構(gòu)建失敗的原因?怎么解決?
使用MDK構(gòu)建Mbed操作系統(tǒng)項目
Grindbit的構(gòu)建開源項目

可以在家中構(gòu)建的最酷的Arduino項目

使用Launchpad和Energia構(gòu)建的開源項目

互聯(lián)蜂箱的構(gòu)建項目

CMake構(gòu)建后的項目結(jié)構(gòu)解析

評論