国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺析Web開發(fā)工具Django的MVC架構(gòu)

2021-11-25 10:58:09孫建軍,李琪,呂強(qiáng)
品牌與標(biāo)準(zhǔn)化 2021年6期
關(guān)鍵詞:架構(gòu)

孫建軍,李琪,呂強(qiáng)

【摘要】 本文深入淺出地分析了網(wǎng)站制作工具Django的MVC架構(gòu)思想,并結(jié)合示例進(jìn)行了說明,對進(jìn)一步深入理解并運(yùn)用dango解決實(shí)際問題提供了借鑒和幫助。

【關(guān)鍵詞】 Django;MVC;架構(gòu)

【DOI編碼】 10.3969/j.issn.1674-4977.2021.06.039

Analysis on the MVC Architecture of Web Development Tool Django

SUN Jian-jun,LI Qi,LV Qiang

(Shaanxi Institute of Standardization,Xi-an 710000,China)

Abstract: This article analyzes the MVC architecture ideas of Django,a website production tool,in a simple and simple way,and explains it with examples,which provides reference and help for further understanding and using dango to solve practical problems.

Key words: Django;MVC;architecture

Django是一個基于Python語言的WEB開發(fā)工具,2005年作為一個開源項(xiàng)目發(fā)布。目前,世界上許多的公司和組織已經(jīng)將Django應(yīng)用在自己開發(fā)的項(xiàng)目中。

Django運(yùn)行在服務(wù)器端主要用于Web網(wǎng)站的制作。其開發(fā)框架由數(shù)據(jù)、呈現(xiàn)、控制三部分構(gòu)成,被稱為MVC架構(gòu)。這種架構(gòu)的優(yōu)點(diǎn)在于,可在其數(shù)據(jù)、呈現(xiàn)、控制部分分別進(jìn)行獨(dú)立開發(fā)、維護(hù),使得系統(tǒng)的靈活性、協(xié)調(diào)性顯著增強(qiáng)。

1 MVC架構(gòu)

MVC是Model-View-Controller的縮寫,Model表示模型,View稱為呈現(xiàn)方式,Controller是控制器。三者共同構(gòu)成了一個既彼此獨(dú)立又相互協(xié)同的有機(jī)整體,這就是通常所說的MVC架構(gòu)。在MVC架構(gòu)下,操作是在View上進(jìn)行,其響應(yīng)就會被傳送給Controller,而Controller根據(jù)業(yè)務(wù)邏輯去操作Model的數(shù)據(jù),而最終數(shù)據(jù)的變化會反映到View。

圖1 Django的MVC架構(gòu)圖

圖1中通過模型M,Django可以對數(shù)據(jù)庫進(jìn)行操作,需要在模型中按照Django的方式定義能夠反映數(shù)據(jù)庫中表結(jié)構(gòu)的類來完成,類屬性對應(yīng)于數(shù)據(jù)庫中表的字段。便于實(shí)現(xiàn)類與表的關(guān)聯(lián)。Django開發(fā)的通用且簡單的數(shù)據(jù)庫接口,可以方便地配置并連接諸如Mysql、Oracle等多種數(shù)據(jù)庫系統(tǒng)。Django提供了數(shù)據(jù)查詢、修改、刪除等一系列常用功能,實(shí)現(xiàn)對數(shù)據(jù)庫的操作。

控制邏輯C是Python系列函數(shù)。是Django的處理和控制核心。瀏覽器上顯示的動態(tài)頁面,需要在后臺也即服務(wù)器端通過大量的控制和數(shù)據(jù)處理工作來完成,基于Python語言的Django,具有實(shí)現(xiàn)復(fù)雜邏輯控制和強(qiáng)大的數(shù)據(jù)處理能力。

在看呈現(xiàn)方式V,瀏覽器上能夠解釋的是標(biāo)準(zhǔn)的Html靜態(tài)文本文件,但能夠體現(xiàn)動態(tài)特征的Html文件,需要在服務(wù)器端進(jìn)行處理。Django以Html(不限于)為基礎(chǔ)并進(jìn)行了擴(kuò)充,增加了變量替換和邏輯控制等功能,實(shí)現(xiàn)了頁面的動態(tài)化,頁面最終由Django渲染后,形成標(biāo)準(zhǔn)的Html文本,交由瀏覽器解釋,實(shí)現(xiàn)了動態(tài)頁面的顯示。

整個框架工作流程是,從客戶端的瀏覽器上發(fā)出頁面請求,服務(wù)器端接收到請求,交由控制器C,C使用在M中定義并獲取的數(shù)據(jù)進(jìn)行處理,利用V中定義的模板文件(以Html為基礎(chǔ)的文本文件),生成標(biāo)準(zhǔn)的Html文件后,傳送至客戶端的瀏覽器上進(jìn)行顯示。

Django在服務(wù)器端構(gòu)建了3個重要模塊,它們均為Python模塊,這些模塊分別對應(yīng)了架構(gòu)中的MVC。Models.py模塊用一個Python類來描述數(shù)據(jù)表,并實(shí)現(xiàn)與數(shù)據(jù)庫系統(tǒng)的連接,對應(yīng)于MVC中的M;Views.py模塊包含了頁面的業(yè)務(wù)和控制邏輯,在Django中又稱為視圖,對應(yīng)于MVC中的C;Template模板系統(tǒng),包含了基于HTML格式的文本文件,經(jīng)渲染后,在客戶端瀏覽器上顯示頁面,對應(yīng)于MVC中的V。

2 示例

1)配置數(shù)據(jù)庫

Django可以配置并連接多種數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫名在配置數(shù)據(jù)庫系統(tǒng)時指定。以下在M(模型)中定義一個公司類,類名為company。

From django db import models

Class company(models.Model):

Name=models.CharField(max_length=30)

address=models.CharField(max_length=50)

city=models.CharField(max_length=60)

province=models.CharField(max_length=30)

從django.db中導(dǎo)出模型models,使用models中字符串類型定義類的各屬性。在與配置的數(shù)據(jù)庫同步后,Django將定義的類轉(zhuǎn)化為一個數(shù)據(jù)庫下的表。以下用類的objects.create方法為表創(chuàng)建一條記錄,并保存至數(shù)據(jù)庫中。

p=company.objects.create(name='某公司',address='某街某號',city='某市',province='某省或自治區(qū)')

2)定義模板文件

在V(模板)中定義一個文件,稱為模板文件,取名ep.html。

示例

公司名稱:{{name}}

公司地址:{{address}}

所在城市:{{city}}

所在省或自治區(qū):{{province}}

{{ }}是Django的占位符,占位符內(nèi)是變量名,變量經(jīng)賦值后,替代占位符。

3)編制控制流程

定義一個Python函數(shù):取名example.作為C(控制器)中的方法。

from django.template.loader import get_template

from django.template import Context

from django.http import HttpResponse

Def example(request):

t=get_temlate(ep)

c=context({'name':p.name,'address':p.address,'city':p.city,'province':p.province})

html=t.render(c)

return httpResponse(html)

其中,get_temlate()是Django的函數(shù),從django.template.loader程序包中導(dǎo)出,作用是將模板文件轉(zhuǎn)化為模板對象。

t=get_temlate(ep)

將已定義的ep模板文件作為參數(shù)傳入,生成模板對象t。Context()函數(shù)從django.template程序包導(dǎo)出,生成上下文對象。

c=context({'name':p.name,'address':p.address,'city':p.city,'province':p.province})

定義一個python字典,為變量賦值,并將字典作為context()函數(shù)的參數(shù),生成上下文對象c。

html=t.render(c)

調(diào)用模板對象t的方法render(),以上下文對象作為參數(shù),對模板文件ep進(jìn)行渲染,實(shí)際上是用字典中定義的各項(xiàng)去替換文檔中的占位符并給變量賦值。渲染后的文件為標(biāo)準(zhǔn)的Html文件。

示例

公司名稱:某公司

公司地址:某街某號

所在城市:某市

所在省或自治區(qū):某省或自治區(qū)}

最后將該文本用httpResponse()返回給瀏覽器,將會在頁面上看到以下信息:

公司名稱:某公司;公司地址:某街某號;所在城市:某市;所在省或自治區(qū):某省或自治區(qū)。

3 結(jié)語

MVC是當(dāng)今Web領(lǐng)域網(wǎng)站制作類工具最為流行和廣泛使用的開發(fā)架構(gòu)。以上示例較為具體地說明在架構(gòu)下的開發(fā)和工作過程,這對進(jìn)一步深入理解并運(yùn)用django解決實(shí)際問題提供了借鑒和幫助。

【作者簡介】,

孫建軍,男,高級工程師,研究方向?yàn)樾畔⒒瘧?yīng)用。

李琪,男,工程師,碩士,研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。

呂強(qiáng),男,高級工程師,碩士,研究方向?yàn)榻y(tǒng)一社會信用代碼及電子政務(wù)信息化。

猜你喜歡
架構(gòu)
基于FPGA的RNN硬件加速架構(gòu)
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
汽車工程(2021年12期)2021-03-08 02:34:30
基于云服務(wù)的圖書館IT架構(gòu)
時代人物(2019年27期)2019-10-23 06:12:20
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
具身學(xué)習(xí)環(huán)境SMALLab的架構(gòu)分析及啟示
托里县| 金堂县| 辽中县| 宿迁市| 阿巴嘎旗| 淮南市| 吴桥县| 化州市| 石家庄市| 榆林市| 乐陵市| 克拉玛依市| 洱源县| 丰镇市| 阜平县| 抚顺县| 曲阳县| 凉城县| 沁源县| 会宁县| 巴彦淖尔市| 明溪县| 密山市| 乌兰察布市| 乌兰浩特市| 沁水县| 哈密市| 定安县| 铅山县| 大名县| 黑水县| 盘锦市| 兴义市| 法库县| 卢氏县| 大埔区| 海伦市| 响水县| 吉林省| 大同市| 古浪县|