APP下载

浅析Web开发工具Django的MVC架构

2021-11-25孙建军,李琪,吕强

品牌与标准化 2021年6期
关键词:架构

孙建军,李琪,吕强

【摘要】 本文深入浅出地分析了网站制作工具Django的MVC架构思想,并结合示例进行了说明,对进一步深入理解并运用dango解决实际问题提供了借鉴和帮助。

【关键词】 Django;MVC;架构

【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开发工具,2005年作为一个开源项目发布。目前,世界上许多的公司和组织已经将Django应用在自己开发的项目中。

Django运行在服务器端主要用于Web网站的制作。其开发框架由数据、呈现、控制三部分构成,被称为MVC架构。这种架构的优点在于,可在其数据、呈现、控制部分分别进行独立开发、维护,使得系统的灵活性、协调性显著增强。

1 MVC架构

MVC是Model-View-Controller的缩写,Model表示模型,View称为呈现方式,Controller是控制器。三者共同构成了一个既彼此独立又相互协同的有机整体,这就是通常所说的MVC架构。在MVC架构下,操作是在View上进行,其响应就会被传送给Controller,而Controller根据业务逻辑去操作Model的数据,而最终数据的变化会反映到View。

图1 Django的MVC架构图

图1中通过模型M,Django可以对数据库进行操作,需要在模型中按照Django的方式定义能够反映数据库中表结构的类来完成,类属性对应于数据库中表的字段。便于实现类与表的关联。Django开发的通用且简单的数据库接口,可以方便地配置并连接诸如Mysql、Oracle等多种数据库系统。Django提供了数据查询、修改、删除等一系列常用功能,实现对数据库的操作。

控制逻辑C是Python系列函数。是Django的处理和控制核心。浏览器上显示的动态页面,需要在后台也即服务器端通过大量的控制和数据处理工作来完成,基于Python语言的Django,具有实现复杂逻辑控制和强大的数据处理能力。

在看呈现方式V,浏览器上能够解释的是标准的Html静态文本文件,但能够体现动态特征的Html文件,需要在服务器端进行处理。Django以Html(不限于)为基础并进行了扩充,增加了变量替换和逻辑控制等功能,实现了页面的动態化,页面最终由Django渲染后,形成标准的Html文本,交由浏览器解释,实现了动态页面的显示。

整个框架工作流程是,从客户端的浏览器上发出页面请求,服务器端接收到请求,交由控制器C,C使用在M中定义并获取的数据进行处理,利用V中定义的模板文件(以Html为基础的文本文件),生成标准的Html文件后,传送至客户端的浏览器上进行显示。

Django在服务器端构建了3个重要模块,它们均为Python模块,这些模块分别对应了架构中的MVC。Models.py模块用一个Python类来描述数据表,并实现与数据库系统的连接,对应于MVC中的M;Views.py模块包含了页面的业务和控制逻辑,在Django中又称为视图,对应于MVC中的C;Template模板系统,包含了基于HTML格式的文本文件,经渲染后,在客户端浏览器上显示页面,对应于MVC中的V。

2 示例

1)配置数据库

Django可以配置并连接多种数据库系统,数据库名在配置数据库系统时指定。以下在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中导出模型models,使用models中字符串类型定义类的各属性。在与配置的数据库同步后,Django将定义的类转化为一个数据库下的表。以下用类的objects.create方法为表创建一条记录,并保存至数据库中。

p=company.objects.create(name='某公司',address='某街某号',city='某市',province='某省或自治区')

2)定义模板文件

在V(模板)中定义一个文件,称为模板文件,取名ep.html。

示例

公司名称:{{name}}

公司地址:{{address}}

所在城市:{{city}}

所在省或自治区:{{province}}

{{ }}是Django的占位符,占位符内是变量名,变量经赋值后,替代占位符。

3)编制控制流程

定义一个Python函数:取名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的函数,从django.template.loader程序包中导出,作用是将模板文件转化为模板对象。

t=get_temlate(ep)

将已定义的ep模板文件作为参数传入,生成模板对象t。Context()函数从django.template程序包导出,生成上下文对象。

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

定义一个python字典,为变量赋值,并将字典作为context()函数的参数,生成上下文对象c。

html=t.render(c)

調用模板对象t的方法render(),以上下文对象作为参数,对模板文件ep进行渲染,实际上是用字典中定义的各项去替换文档中的占位符并给变量赋值。渲染后的文件为标准的Html文件。

示例

公司名称:某公司

公司地址:某街某号

所在城市:某市

所在省或自治区:某省或自治区}

最后将该文本用httpResponse()返回给浏览器,将会在页面上看到以下信息:

公司名称:某公司;公司地址:某街某号;所在城市:某市;所在省或自治区:某省或自治区。

3 结语

MVC是当今Web领域网站制作类工具最为流行和广泛使用的开发架构。以上示例较为具体地说明在架构下的开发和工作过程,这对进一步深入理解并运用django解决实际问题提供了借鉴和帮助。

【作者简介】,

孙建军,男,高级工程师,研究方向为信息化应用。

李琪,男,工程师,硕士,研究方向为网络与信息安全。

吕强,男,高级工程师,硕士,研究方向为统一社会信用代码及电子政务信息化。

猜你喜欢

架构
基于云控平台雾计算架构的网联汽车路径控制
沃尔沃汽车宣布启动全新CMA豪华紧凑型整车平台架构
VIE:从何而来,去向何方
企业架构需要统一标准
企业架构的最佳实践
三层架构在企业信息化中的应用