Django 3.0入门与实践
上QQ阅读APP看书,第一时间看更新

2.2 MTV框架

前面的Web开发框架非常简单,完全符合初级程序员想到哪做到哪的开发风格。这种开发风格在个人开发或者微型团队开发中不会出现任何问题,有时还能够提高沟通效率,减少工作量。但是,当团队规模扩大、业务场景变得越来越复杂的情况下,这种开发模式就会给开发人员和技术管理人员带来诸多麻烦,例如,有时某一个开发人员辛辛苦苦地完成一个方法后却发现其他人在很早之前已经完成了;有时系统里存在一个非常高效的方法却没有人知道存放位置,最终的代码变得杂乱无章且难以管理。为了解决这些问题,软件开发中逐渐引入了开发框架的概念,开发框架通常针对某一领域使得代码更容易地被重用。经常被提及的设计模式有微软的ASP.NET MVC框架、Java的Spring框架等。

Django框架的基础是MTV模式,它将开发任务分为三大部分:Model、Template、View。很多人可能对MTV不太了解,但是,如果说到一个和它相似的开发模式你一定了解,或者说很熟悉,那就是MVC开发模式。MVC模式就是把Web应用分为Model(模型)、View(视图)、Controller(控制器)三层。

Model:负责业务对象与数据库的关系映射(一般基于ORM(Object Relational Mapping,对象关系映射)框架)。

View:负责页面展示,也就是与用户直接交互的网页部分。

Controller:接收并处理用户的请求,通常需要调用Model和View来完成用户请求。

MVC模式三者之间的关系如下图所示。

MTV与MVC模式非常相似,也将开发工作分为三层:

M代表模型(Model):负责业务对象和数据库的关系映射(ORM),这与MVC模式中的模型是一样的。

T代表模板(Template):负责把页面展示给用户(html),这部分类似于MVC中的视图。

V代表视图(View):负责业务逻辑,并在适当时候调用Model和Template,这里就不是MVC的View了,反而更像是Controller。

Django的响应模式如下图所示。

响应顺序如下:

(1)Django中间件接收到一个用户请求。

(2)Django通过URLconf查找对应的视图,然后进行URL路由分发。

(3)视图接收请求,查询对应的模型,调用模板生成HTML文档。

(4)视图返回处理后的HTML文档。

(5)Web服务器将响应内容发送给客户端。