【Django入门】——MVC和MVT两种模式的异同

Django是典型的采用了MVT设计模式的后端开发框架,而比MVT更常见的一种设计模式叫做MVC,为了更好地学习Django框架并加深对其理解,需要首先搞明白MVCMVT二者的异同。

MVCMVT都是一种后端开发框架的设计模式,这两种模式都可以实现使用框架开发项目时模块间的解耦,从而可以通过多人协同提高开发效率,二者最大的区别在于,在MVC模式中开发者需要编写所有和控制相关的代码。

一、MVC设计模式简介

该设计模式将软件分成了三个主要组成模块:Model(模型)、View(视图)和Controller(控制器),每一个模块都有各自独立的职责,可以互不影响协同工作。关于三个模块,具体职责为:

名称 功能
Model 该模块负责与数据相关的逻辑,例如:查询、修改、保存数据至数据库等,该模块可视为数据访问层
View 该模块负责数据的展示,将数据从模型或用户处获取后进行展示。一般在使用遵循MVC设计模式框架开发的web项目中,所有通过浏览器向用户展示的功能都由视图模块实现。
Controller 该模块负责控制数据流向以及视图模型之间的交互。例如:控制器会基于请求,经由模型协助从数据库中获取数据,进而通过视图将数据呈现给用户。

在这里插入图片描述

二、MVT设计模式简介

该设计模式也将软件分成了三个主要组成模块:Model(模型)、View(视图)和Template(模板),每一个模块的具体职责为:

名称 功能
Model 该模块和MVC中模型部分功能一样,主要包含负责数据和数据库处理相关代码。
View 该模块和MVC中的视图功能相去甚远,主要用于执行业务逻辑,从模型处获取数据,将数据给到特定的模板进行渲染后向用户展示。
Template 该模块可视为表示层,主要负责处理用户界面。该模块的文件主要是HTML代码,用用于浏览器渲染数据。

在这里插入图片描述

三、MVC和MVT的异同

MVCMVT两种模式的主要区别在于:在MVC模式中,开发者需要编写所有和控制器相关的代码,但是在MVT模式中,框架本身完成了控制器相关功能。

在经典的MVC模式下,当用户通过浏览器发起一个请求后,将触发控制器中的一个功能调用,然后控制器要么告诉模型修改数据库并更新视图,要么基于模型返回一个更新后的视图。也就是说视图是由控制器模型控制的。

然而,MVT模式的处理逻辑稍有不同:当一个用户发起一次HTTP请求后,相关的视图将通过模型执行一次查询,进而获取查询的结果,最后视图将结果数据填进模板后发送给用户。

四、Django和MVT模式

最著名的Python后端框架Django就是采用了MVC模式的典型代表。一般的后端应用都可以分为数据层、逻辑处理层以及布局层,在Django中:

  • 模型负责数据层;
  • 视图负责逻辑处理层;
  • 模板负责布局层。

实际上,如果你仅熟悉遵循MVC模式的后端框架,你基本上可以将Django所遵循的MVT模式中的视图理解为MVC中的控制器模板理解为视图

在Django中:

  • 视图负责处理用户用该看到哪些数据而不是如何展示这些数据;
  • 为了在将展示的效果和内容分开,因为需要模板
  • 控制器可理解就是框架本身,其负责根据Django的URL配置将请求发给适当的视图

关于如何Django框架的M(模型)、V(视图)和T(模板)三个模块,请见下列两篇文章:

猜你喜欢

转载自blog.csdn.net/weixin_37780776/article/details/107370836