Django框架
在了解Django之前,首先要了解这样一个概念: web框架
在现实生活中,我们通过手机、电脑等设备获取网络上的讯息,对于这个流程,大致都有一个模糊的概念,就是数据是从各大公司的数据库中获取,然后通过web系统的各种web服务,通过网络传输到手机、电脑上。而这个流程,是需要对web框架进行编码,然后通过一系列的协议转换等等流程,将数据传输到网络中。
web框架是用于进行Web开发的一套软件架构,提供了一套开发和部署网站的方式,软件开发人员通过学习它的规则,对业务逻辑进行编程以实现数据的交互。
一般web框架的架构是这样的:
![](https://img-blog.csdnimg.cn/20190714222102240.png)
一、Django 简介
Django 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。由于 Python 语言的跨平台性,所以 Django 同样支持 Windows、Linux 和 Mac 系统。
在 Python 语言炽手可热的当下,Django 也迅速的崛起,在 Web 开发领域占有一席之地。基于 Python 开发的框架除了 Django 外,还有可以实现快速建站 Flask 和支持高并发处理的 Tornado ,而 Django 是最有代表性的一位,它们三者是当前最流行的 Python Web 框架。
Django发布于2005年,是当前Python世界里最负盛名且成熟的网络框架。最初用来制作在线新闻的Web站点。
官方网站:https://www.djangoproject.com/
Django文档网站:https://docs.djangoproject.com/zh-hans
Django框架的特点
相对于 Python 的其他 Web 框架,Django 的功能是最完整的,Django 定义了服务发布、路由映射、模板编程、数据处理的一整套功能。这也意味着 Django 模块之间紧密耦合。
Django 的主要特点如下:
- 完善的文档:经过 10 余年的发展和完善,Django 官方提供了完善的在线文档,为开发者解决问题提供支持。
- 集成 ORM 组件:Django 的 Model 层自带数据库 ORM 组件,为操作不同类型的数据库提供了统一的方式。
- URL 映射技术:Django 使用正则表达式管理URL映射,因此给开发者带来了极高的灵活性。
- 后台管理系统:开发者只需通过简单的几行配置和代码就可以实现完整的后台数据管理Web控制台。
- 错误信息提示:在开发调试过程中如果出现运行异常,Django 可以提供非常完整的错误信息帮助开发者定位问题。
二、MVC和MTV
Django是一个用Python编写的开放源代码的Web应用框架(源代码是开源的,遵守BSD版权)。采用了MVC的框架模式,也有很多人把它称为MVT(MTV)模式。
MVC设计模式
MVC 设计模式是一种软件设计典范,使业务逻辑,界面,数据分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化界面结构中。
MVC 是 Model-View-Controller 的缩写
-
Model:用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑部分,Model通常只提供功能性的接口,通过这些接口可以获取Model的所有功能。
-
View: 负责数据的显示和呈现,View是对用户的直接输出。
-
Controller: 负责从用户端收集用户的输入,可以看成提供View的反向功能,主要处理用户交互。
![](https://img-blog.csdnimg.cn/2019071422270489.png)
MVC 设计模式的请求与响应过程描述如下:
- 用户通过浏览器向服务器发起 request 请求,Controller 层接受请求后,同时向 Model 层和 View 发送指令;
- Mole 层根据指令与数据库交互并选择相应业务数据,然后将数据发送给 Controller 层;
- View 层接收到 Controller 的指令后,加载用户请求的页面,并将此页面发送给 Controller 层;
- Controller 层接收到 Model 层和 View 层的数据后,将它们组织成响应格式发送给浏览器,浏览器通过解析后把页面展示出来。
解耦是MVC设计模式的核心思想。
MVC 的 3 层之间紧密相连,但又相互独立,每一层的修改都不会影响其它层,每一层都提供了各自独立的接口供其它层调用。这种设计模式降低了代码之间的耦合性(即关联性),增加了模块的可重用性,更容易重构代码,最大程度实现了代码的重用。
MTV设计模式
MTV 设计模式本质上与MVC没什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同。
Django 的MTV设计模式借鉴了经典的 MVC 模式,它也将交互的过程分为了 3 个层次
MTV 是 Model-View-Template 的缩写
-
Model:数据存储层。负责业务对象与数据库(ORM)的对象(类对应表)
-
View:业务逻辑层。负责处理具体的业务逻辑,并在适当的时候调用Model和Template
-
Template: 模板层(也叫表现层)。具体来处理页面的显示,负责把页面展示给用户。 Template 英文的含义就是“模板”的意思,可以简单理解成,它是一个 HTML 页面 ,HTML 页面的渲染在视图层完成
MTV 设计模式的请求与响应过程描述:
- 用户通过浏览器对服务器发起 request 请求,服务器接收请求后,通过 View 的业务逻辑层进行分析,同时向 Model 层和 Template 层发送指令;
- Mole 层与数据库进行交互,将数据返回给 View 层;
- Template 层接收到指令后,调用相应的模板,并返回给 View 层;
- View 层接收到模板与数据后,首先对模板进行渲染(即将相应的数据赋值给模板),然后组织成响应格式返回给浏览器,浏览器进行解析后并最终呈现给用户。
注意:Django中还有一个url分发器(也可以叫做路由),主要用来将一个个URL页面的请求分发给不同的View进行处理,View再调用相应的Model和Template。
![](https://img-blog.csdnimg.cn/20190714222909161.png)
通过以上两种设计模式的比较, 可以得出结论: MTV 是 MVC 的一种细化,将原来 MVC 中的 V 层拿出来进行离,视图的显示与如何显示交给 Template 层,而 View 层更专注于实现业务逻辑。其实在 Django 是有 Controller 层的,只不过它由框架本身来实现,所以我们不用关心它。Django 更关注于M、T 和 V。