在讀完《初識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ù)器(本機)8000端口。
(1).根據(jù)hello_post查詢對應(yīng)的處理函數(shù):Django框架加載urls.py,代碼行url(r'^hello-post$', views.hello_post)標識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值進行替換,生成可展示的視圖。
(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。
事實上,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文章
49瀏覽量
10001 -
可視化
+關(guān)注
關(guān)注
1文章
1194瀏覽量
20934 -
Models
+關(guān)注
關(guān)注
0文章
74瀏覽量
20694
發(fā)布評論請先 登錄
相關(guān)推薦
評論