MVC&MTV

本文主要介绍了MVC和Django的MTV模式。MVC将web应用分为模型、控制器和视图三层,可简化程序修改和扩充。Django是Python的Web框架,采用MTV模式,本质与MVC类似。文中还阐述了Django的优点、MTV响应模式、处理顺序,并比较了MTV与MVC的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语:在最近的工作中,我接触了解了布道平台,参与了部分代码修改。在此期间,我学习了MVC和MTV,为了理解得更清楚,在此,我将这段时间对框架模式的学习整理下来。

一、MVC模式

首先说说web服务器开发领域里著名的MVC模式。所谓MVC就是把web应用分为,模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起。模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入,调用模型和视图完成用户的请求。

对M、V、C功能作用整理如下:
在这里插入图片描述
MVC模式工作流程如下:
在这里插入图片描述
综合看来,MVC模式的目的是实现一种动态的程式设计,使后续程式的修改和扩充操作简化,并且使程式的某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程式结构更加直观:

1.使用MVC,开发人员可以将软件应用分为三个主要部分:模型、视图、控制器。这有助于提高可维护性,强制松耦合,并降低复杂性。

2.MVC允许对前端进行独立更改,而对后端逻辑无需任何修改或只需进行很少的更改,因此开发工作仍可以独立运行。

3.类似地,可以更改模型或业务逻辑,而无需对视图进行任何更改。

4.此外,可以更改控制器,而不会对视图或模型造成任何影响。

二、Django简介

Python的WEB框架有Django、Tornado、Flask 等多种,而Django相较于其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

布道平台使用的Django是一个开放源代码的Web应用框架。Django采用了MTV的设计模式,即模型M,模版T和视图控制器V。Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系。

Django的优点:

1.开源框架,有完美的文档支持

2.解决方案众多,内部功能支持较多

3.优雅的URL,完整的路由系统

4.自助式的后台管理

三、Django的MTV模式

Django的MTV分别是:

M代表模型(Model):负责业务对象和数据库的关系映射(ORM)。

T代表模板(Template):负责如何把页面展示给用户(html)。

V代表视图(View):负责业务逻辑,并在适当时候调用Model和Template。

MTV的响应模式如下:
在这里插入图片描述
1,Web服务器(中间件)收到一个http请求

2,Django在URLconf里查找对应的视图(View)函数来处理http请求

3,视图函数调用相应的数据模型来存取数据、调用相应的模板向用户展示页面

4,视图函数处理结束后返回一个http的响应给Web服务器

5,Web服务器将响应发送给客户端

四、Django处理顺序

1、wsgi:socket请求处理

2、中间件:对请求做预处理或直接返回

3、urls.py:url匹配,通过映射列表将一个请求发送到一个合适的视图

4、views.py:向模型和模板发送(或获取)数据;

5、模型(Model)绑定:数据库存取数据

6、模板(Templates)引擎:用于将内容与展现分离,描述了数据如何展现(如网页模板)

7、模式渲染:将模板和数据整合,形成最终网页;

8、返回用户展示。

以下是网上找到处理流程比较完整的图,在此贴出以供学习:
在这里插入图片描述
五、MTV与MVC的比较

MVC中的View的目的是「呈现哪一个数据」,而MTV的View的目的是【数据如何呈现】。也就是把MVC中的View分成了视图(展现哪些数据)和模板(如何展现)2个部分,而Contorller这个要素由框架自己来实现,我们需要做的就是把(带正则表达式的)URL对应到视图就可以了,通过这样的URL配置,系统将一个请求发送到一个合适的视图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值