亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        楊洪濤

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

        1 引言

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

        百度百科解釋,“軟件框架(software framework) ,通常指的是為了實現(xiàn)某個業(yè)界標準或完成特定基本任務(wù)的軟件組件規(guī)范,也指為了實現(xiàn)某個軟件組件規(guī)范時,提供規(guī)范所要求之基礎(chǔ)功能的軟件產(chǎn)品?!焙喍灾?,框架就是制定一套規(guī)范或者規(guī)則,程序員在該規(guī)范或者規(guī)則下工作,好比使用別人搭好的舞臺來做編劇和表演。Django就是Web開發(fā)方面優(yōu)秀的框架,下面筆者就Django 的MVC 架構(gòu)設(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)前端顯示部分,負責顯示什么和如何顯示,用于向用戶展示結(jié)果。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        4 項目案例

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

        4.1 需求分析

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

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

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

        Stu_Manage是項目的主目錄,其內(nèi)部的manage.py文件是項目的運行入口,指定配置文件路徑。下一級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)用,一般每個獨立的應(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)容。

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

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

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

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

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

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

        粗體代碼要理解透徹,其中{{ }}代表模板變量,表示視圖傳遞給模板的數(shù)據(jù);{% %}表示模板標簽,實現(xiàn)語句控制功能。這一步就實現(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ù)進行映射,修改項目的主路由文件urls.py內(nèi)容如下:

        4.4 項目測試

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

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

        5 結(jié)論

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

        无码吃奶揉捏奶头高潮视频| 国产女人av一级一区二区三区| 日本系列中文字幕99| 精品久久久久久无码中文字幕| 国产真实乱人偷精品人妻| 国产精品国产自线拍免费| 字幕网中文字幕精品一区| 亚洲一区二区三区久久久| 91视色国内揄拍国内精品人妻 | 亚洲无码毛片免费视频在线观看| 日本免费大片一区二区三区| 色综合久久久无码中文字幕| 日韩精品中文字幕无码一区| 久久久www成人免费无遮挡大片| 亚洲一区二区三区熟妇| 99久久99久久久精品齐齐| 亚洲一区二区观看播放| 国产精品久久久久久久久久影院| 日韩中文字幕不卡在线| 热久久美女精品天天吊色| japanese无码中文字幕 | 亚洲av天堂在线免费观看| 国产大片内射1区2区| 99亚洲男女激情在线观看| 久久精品国产丝袜| 亚洲女同av一区二区在线观看| 色中文字幕在线观看视频| a级毛片100部免费看| 在线天堂中文一区二区三区| 我揉搓少妇好久没做高潮| 蜜芽亚洲av无码精品色午夜| 国产熟妇高潮呻吟喷水| 亚洲一区二区三区久久蜜桃| 91九色极品探花内射| 吃奶呻吟打开双腿做受视频| 91视频88av| 漂亮人妻被强中文字幕乱码| 国产精品无码素人福利| 色一乱一伦一图一区二区精品| 亚洲成人av一区二区麻豆蜜桃| 精品国产一区二区三区av天堂|