999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Django 的MVC框架設(shè)計與實(shí)現(xiàn)

2023-03-24 06:59:44楊洪濤
電腦知識與技術(shù) 2023年4期

楊洪濤

關(guān)鍵詞:軟件框架;MVC;MTV;ORM模型

1 引言

Django是用Python語言設(shè)計的一款免費(fèi)的Web開發(fā)框架,它幾乎包括了Web應(yīng)用的各領(lǐng)域,能方便快速地搭建高性能的數(shù)據(jù)庫驅(qū)動網(wǎng)站。Django采用了通用Web開發(fā)模式的高度抽象,為復(fù)雜的編程作業(yè)提供了快速解決方案,它也是一款全能型框架,內(nèi)置了許多模塊,極大地方便了Web開發(fā)者。

百度百科解釋,“軟件框架(software framework) ,通常指的是為了實(shí)現(xiàn)某個業(yè)界標(biāo)準(zhǔn)或完成特定基本任務(wù)的軟件組件規(guī)范,也指為了實(shí)現(xiàn)某個軟件組件規(guī)范時,提供規(guī)范所要求之基礎(chǔ)功能的軟件產(chǎn)品。”簡而言之,框架就是制定一套規(guī)范或者規(guī)則,程序員在該規(guī)范或者規(guī)則下工作,好比使用別人搭好的舞臺來做編劇和表演。Django就是Web開發(fā)方面優(yōu)秀的框架,下面筆者就Django 的MVC 架構(gòu)設(shè)計與實(shí)現(xiàn)介紹一下。

2 MVC 設(shè)計模式

MVC是Web開發(fā)領(lǐng)域著名的設(shè)計模式,MVC是Model-View-Controller的縮寫,其各部分含義如下:

1) Model:表示數(shù)據(jù)存取層,處理與數(shù)據(jù)相關(guān)的所有事務(wù),包括對數(shù)據(jù)表的定義和數(shù)據(jù)的增刪改查等。

2) View:表示視圖層,是系統(tǒng)前端顯示部分,負(fù)責(zé)顯示什么和如何顯示,用于向用戶展示結(jié)果。

3) Controller:表示控制層,主要根據(jù)從View層輸入的指令來檢索Model層的數(shù)據(jù),并在該層編寫代碼產(chǎn)生結(jié)果并輸出,用于處理請求、獲取數(shù)據(jù)和返回結(jié)果[1]。

MVC設(shè)計模式的請求與響應(yīng)過程如圖1所示,運(yùn)行過程如下:

1) 用戶通過瀏覽器向服務(wù)器發(fā)起Request請求,Controller層接受請求后,同時向Model層和View 發(fā)送指令;

2) Model層根據(jù)指令與數(shù)據(jù)庫交互并選擇相應(yīng)業(yè)務(wù)數(shù)據(jù),然后將數(shù)據(jù)發(fā)送給Controller層;

3) View層接收到Controller的指令后,加載用戶請求的頁面,并將此頁面發(fā)送給Controller層;

4) Controller層接收到Model和View層的數(shù)據(jù)后,將它們組織成Response響應(yīng)格式發(fā)送給瀏覽器,瀏覽器通過解析把頁面展示出來。

MVC的三層之間緊密相連,但又相互獨(dú)立,每層的修改都不會影響其他層,每層都提供了各自獨(dú)立的接口供其他層調(diào)用,MVC 的設(shè)計模式降低了代碼之間的耦合性,增加了模塊的可重用性,這正是MVC設(shè)計模式的優(yōu)點(diǎn)所在。

3 MVC 的優(yōu)化設(shè)計模式——MTV

Django是基于MVC構(gòu)造的框架,但在MVC基礎(chǔ)上,對控制器Controller進(jìn)行了封裝,增加了模塊功能Template 實(shí)現(xiàn)前端網(wǎng)頁,所以Django 更關(guān)注的是模型、模板和視圖,稱為MTV設(shè)計模式。其各部分職責(zé)如下:

1) Model:即數(shù)據(jù)存取層,與MVC中的M功能相同,負(fù)責(zé)和數(shù)據(jù)庫交互,處理所有數(shù)據(jù)相關(guān)的業(yè)務(wù),并提供數(shù)據(jù)的增刪改查。

2) Template:即模板層,也叫表現(xiàn)層,與MVC中的V功能相同,負(fù)責(zé)封裝構(gòu)造要返回的HTML,處理頁面的顯示。

3) View:即業(yè)務(wù)邏輯層,與MVC中的C功能相同,接收請求、進(jìn)行業(yè)務(wù)處理和返回應(yīng)答,是連通Model層和Template的橋梁。

對照兩種模式發(fā)現(xiàn),MTV模式中,用View層取代了Controller層的位置,用Template層取代了原來View層的位置,模板可以理解成它是一個HTML 頁面,HTML頁面的渲染在視圖層完成。具體來說,MTV設(shè)計模式的原理如圖2所示,詳細(xì)運(yùn)行過程如下:

1) 用戶通過瀏覽器對服務(wù)器發(fā)起Request請求,服務(wù)器接收請求后,通過View的業(yè)務(wù)邏輯層進(jìn)行分析,同時向Model層和Template層發(fā)送指令;

2) Model 層與數(shù)據(jù)庫進(jìn)行交互,將數(shù)據(jù)返回給View層;

3) Template層接收到指令后,調(diào)用相應(yīng)的模板,并返回給View層;

4) View層接收到模板與數(shù)據(jù)后,首先對模板進(jìn)行渲染(即將相應(yīng)的數(shù)據(jù)賦值給模板),然后組織成相應(yīng)格式返回給瀏覽器,瀏覽器進(jìn)行解析后并最終呈現(xiàn)給用戶。

通過以上兩種設(shè)計模式的比較,可以得出MTV是MVC的一種細(xì)化,它將原來MVC中的V層拿出來進(jìn)行分離,視圖的顯示與如何顯示交給Template層,而View層更專注于實(shí)現(xiàn)業(yè)務(wù)邏輯。當(dāng)然,Django 是有Controller層的,只不過它由框架本身來實(shí)現(xiàn),所以不用關(guān)心它,更關(guān)注于M、T 和V。

4 項目案例

某中等職業(yè)學(xué)校需要開發(fā)一款B/S版的學(xué)生管理信息系統(tǒng),主要功能和要求為:可新增學(xué)生信息、查詢學(xué)生信息、修改學(xué)生信息、刪除學(xué)生信息和瀏覽學(xué)生信息等。

4.1 需求分析

根據(jù)學(xué)生管理信息系統(tǒng)功能要求,可以劃分如下幾個模塊來實(shí)現(xiàn),具體為:新增學(xué)生信息模塊、查詢學(xué)生信息模塊、修改學(xué)生信息模塊、刪除學(xué)生信息模塊和瀏覽學(xué)生信息模塊。由于Django是典范的MVC框架,能靈活地支持?jǐn)?shù)據(jù)庫,而且有強(qiáng)大的后臺管理功能,所以以“瀏覽學(xué)生信息模塊”為例(其他模塊與之相似),討論Django MTV模式開發(fā)的一般步驟[2]。

4.2 項目結(jié)構(gòu)與規(guī)劃

首先,列出本項目的目錄結(jié)構(gòu),如圖3 所示。

Stu_Manage是項目的主目錄,其內(nèi)部的manage.py文件是項目的運(yùn)行入口,指定配置文件路徑。下一級Stu_Manage文件夾內(nèi)部的settings.py是整個項目的配置文件,是項目定制化配置。urls.py是主路由文件,通過URL控制器來處理不同的請求。wsgi.py是py?thon服務(wù)器程序連接到web服務(wù)器的通用協(xié)議文件,用來調(diào)用App的應(yīng)用。stu_reginfo是項目內(nèi)的一個應(yīng)用,一般每個獨(dú)立的應(yīng)用對應(yīng)一個文件夾,目的是讓分類清晰,便于項目分工。

stu_reginfo目錄是MTV框架的核心部分,其中ad?min.py 文件是django 自帶的一個admin 管理模塊,models.py是數(shù)據(jù)模型文件,views.py是處理用戶請求和生成響應(yīng)的視圖文件。

templates文件夾是保存應(yīng)用程序的模板文件,一般包括html前端頁面內(nèi)容。

到此,基于學(xué)生信息系統(tǒng)的MTV 框架目錄結(jié)構(gòu)就清楚了,各文件部分的功能及作用也就明白了,以后開發(fā)人員依照此MTV框架,只需要根據(jù)自身的需求對框架中的各個目錄功能進(jìn)行完善就可進(jìn)行高效開發(fā),設(shè)計出滿足自己需求的各類網(wǎng)站。

4.3 系統(tǒng)設(shè)計

由前面分析,得出MVC或MTV框架的大體設(shè)計流程是:1) 客戶端發(fā)起請求,路由對客戶發(fā)起的請求進(jìn)行統(tǒng)一處理和分發(fā)給控制層;2) 控制層獲取請求,訪問數(shù)據(jù)層;3) 數(shù)據(jù)層對數(shù)據(jù)進(jìn)行增刪改查,把數(shù)據(jù)返回給控制層;4) 控制層獲取數(shù)據(jù),把數(shù)據(jù)調(diào)度給視圖(模板);5) 視圖(模板)對數(shù)據(jù)進(jìn)行渲染,形成html文件返回給控制層;6) 控制層把渲染后的視圖(模板)返回給客戶端。下面以此流程為參考,完成“瀏覽學(xué)生信息模塊”的設(shè)計。

簡單說,ORM的主要功能為:根據(jù)對象的類型生成表結(jié)構(gòu);將對象、列表的操作,轉(zhuǎn)換為SQL語句;將SQL查詢到的結(jié)果轉(zhuǎn)換為對象、列表。

Django中的模型包含存儲數(shù)據(jù)的字段和約束,對應(yīng)數(shù)據(jù)庫中唯一的表。在stu_reginfo應(yīng)用中添加數(shù)據(jù)模型,執(zhí)行數(shù)據(jù)庫遷移,即完成Model(模型)設(shè)計。

“ 瀏覽學(xué)生信息模塊”的數(shù)據(jù)模型文件是stu_reginfo文件夾中的models.py,根據(jù)需求其基本字段定義如下:

python代碼分離,模板定義了占位符及各種規(guī)范文檔該如何顯示的模板標(biāo)簽。采用模板輸出時,需在項目下建立templates文件夾,再在其中建立html文件,在代碼中通過{{ }}輸出后臺需返回的內(nèi)容。

本項目中瀏覽器端輸出學(xué)生信息瀏覽效果,通過模板文件stu_reginfo_list.html實(shí)現(xiàn),主要代碼如下:

粗體代碼要理解透徹,其中{{ }}代表模板變量,表示視圖傳遞給模板的數(shù)據(jù);{% %}表示模板標(biāo)簽,實(shí)現(xiàn)語句控制功能。這一步就實(shí)現(xiàn)了動態(tài)生成HTML頁面功能,完成Template(模板)設(shè)計,這和前面修改setting.py配置文件就一致了。

Django中路由系統(tǒng)的作用是使視圖中處理數(shù)據(jù)的函數(shù)與請求的URL建立映射關(guān)系,請求時可根據(jù)urls.py中的條目找到請求對應(yīng)的處理方法。根據(jù)前面設(shè)計,將路由規(guī)則stu_reginfo_list與視圖函數(shù)進(jìn)行映射,修改項目的主路由文件urls.py內(nèi)容如下:

4.4 項目測試

通過以上步驟,完成了M、T 和V的設(shè)計,現(xiàn)在可以啟動項目進(jìn)行測試了,在命令行執(zhí)行python man?age.py runserver命令啟動項目,若顯示如圖4提示,表示項目啟動正常,沒有錯誤。然后在瀏覽器中打開http://127.0.0.1:8000/stu_reginfo_list/,即可看到圖5結(jié)果,表明“瀏覽學(xué)生信息模塊”設(shè)計成功。

通過上面“瀏覽學(xué)生信息模塊”的設(shè)計也發(fā)現(xiàn),MTV這種設(shè)計模式關(guān)鍵優(yōu)勢在于各種組件之間的松耦合性,每個由Django驅(qū)動的Web應(yīng)用都有獨(dú)立的目標(biāo),并且可單獨(dú)更改而不影響其他的部分。如開發(fā)者更改一個應(yīng)用程序中的URL而不會影響到這個程序底層的實(shí)現(xiàn),或者設(shè)計者改變HTML頁面的樣式而不用接觸Python代碼等特點(diǎn)[3]。

5 結(jié)論

本文以流行的MVC框架模式為指導(dǎo),以學(xué)生管理信息系統(tǒng)中“瀏覽學(xué)生信息模塊”功能的實(shí)現(xiàn)為案例,分析說明了MVC框架開發(fā)的工作原理和思路,總結(jié)了Django MTV模式開發(fā)Web網(wǎng)站的基本流程和步驟,希望能對進(jìn)一步深入理解并運(yùn)用Django解決實(shí)際問題提供參考和幫助。

主站蜘蛛池模板: 1769国产精品视频免费观看| 91毛片网| 欧美日韩导航| 伊人91视频| 久久免费精品琪琪| A级全黄试看30分钟小视频| 国产精品白浆在线播放| 国产亚洲男人的天堂在线观看| 久久99精品久久久久纯品| 国产精品99在线观看| 欧美在线一级片| 中文字幕永久视频| 亚洲免费毛片| 欧美日韩福利| 亚洲最大看欧美片网站地址| 韩日无码在线不卡| 搞黄网站免费观看| 国产爽爽视频| 在线视频亚洲欧美| 在线免费无码视频| 2020国产精品视频| 一级毛片在线播放| 亚洲啪啪网| 中国美女**毛片录像在线| 99视频在线看| 国产真实乱子伦视频播放| 成年女人a毛片免费视频| 亚洲成年人片| 国产99视频精品免费观看9e| 在线国产综合一区二区三区| 一本色道久久88亚洲综合| 99热在线只有精品| 国产乱码精品一区二区三区中文 | 免费av一区二区三区在线| 国产欧美亚洲精品第3页在线| 欧美精品一区二区三区中文字幕| 亚洲经典在线中文字幕| 狠狠干综合| 怡红院美国分院一区二区| 欧美日韩免费观看| 欧美另类第一页| 欧美综合在线观看| 97国产一区二区精品久久呦| 巨熟乳波霸若妻中文观看免费| 一区二区三区四区日韩| 日本精品αv中文字幕| 91色在线视频| 国产美女在线免费观看| 国产精品2| 久久综合九色综合97婷婷| 国产剧情国内精品原创| 日本手机在线视频| 久久女人网| 五月综合色婷婷| 欧美日本中文| 国产农村1级毛片| 伊人色在线视频| 欧美精品影院| 国产成人艳妇AA视频在线| 日本国产在线| 国产夜色视频| 狂欢视频在线观看不卡| 久久免费看片| 色综合a怡红院怡红院首页| 精品无码人妻一区二区| 在线亚洲小视频| 波多野结衣一区二区三区四区视频| 五月天久久综合| 亚洲一级毛片在线观| 国内精品久久人妻无码大片高| 久久中文字幕2021精品| 欧美亚洲欧美区| 亚洲欧美不卡中文字幕| 日韩A∨精品日韩精品无码| 国产精品专区第一页在线观看| 国产69精品久久久久妇女| 免费a级毛片18以上观看精品| 91福利在线看| 亚洲国产中文欧美在线人成大黄瓜| 日韩精品一区二区三区大桥未久 | 美女高潮全身流白浆福利区| 亚洲婷婷丁香|