深入浅析Django MTV模式

MVC模式

MVC, 全名Model View Controller, 是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model), 视图(View)和控制器(Controller), 具有耦合性低,重用性高、生命周期成本低等优点。

MVT模式

模型:数据存储层,处理与数据相关的所有事务,例如如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。负责业务对象与数据库的对象(orm)。
模板:表现层,处理与表现相关的决定,例如如何在页面或其他类型的文档中进行显示。
Django作为Web框架,需要一种很便利的方法动态的生成HTML网页,因此有了模板这个概念。模板包含所需HTML的部分代码以及一些特殊的语法,特殊语法用于描述如何将视图传递的数据动态插入HTML网页中。
Django可以配置一个或多个模板引擎(甚至是0个,如前后端分离,Django只提供API接口,无需使用模板引擎),模板引擎有Django模板语言(DTL)和Jinja2。Django模板语言是Django内置的功能之一,Jinja2是当前Python流行的模板语言。
视图:业务逻辑层,存取模型及调取恰当模板的相关逻辑,模型与模板的桥梁。主要负责处理用户请求和生成相应的相应内容,然后在页面或其他类型文档中显示。也可以理解为视图是MVC架构里面的C部分(控制器),主要处理功能和业务上的逻辑。我们习惯使用视图函数处理HTTP请求,记载视图里定义def函数,这种方式成为FBV(Function Base Views)。

(引自:https://zhuanlan.zhihu.com/p/362268440

Django框架的基础就是MTV模式, 将开发任务分为三大部分:

  • Model:负责业务对象和数据库的关系映射(ORM),与MVC模式中的Model是等同。
  • Template:负责如何把页面展示给用户(HTML),这部分类似与MVC中的视图。
  • View:负责业务逻辑,并在适当时候调用Model和Template。跟MVC中的Controller等同。

首先,我们要知道:MVT是什么?
昨天也提到了:
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

MVT是一个前沿的软件架构模式,它具有高效的ORM(Object Relation Mapping)数据操作,将程序中的对象【object】和数据库中的表【relation】建立关联关系,关系【mapping】的过程称为ORM.

为什么使用MVT结构?

1.实现高内聚低耦合易于开发
在实际开发过程中,需要根据不同的需求对原版本进行迭代,MVT把对数据库操作,请求处理和页面布局进行了分离,方便了对代码的更新,不需要牵一发而动全身,易于代码的维护。
2.提高开发效率
做到了前后端的分离,易于代码的整合.方便使用者分工合作。也提高了重用性,对于相似部分方便复用,提高了开发效率。
那么,你是不是还记住了那句话“Django框架遵循MVC设计”?MVC是个什么玩意儿?
M表示Model,主要用于对数据库层的封装;
V表示View,用于向用户展示结果;
C表示Controller,是核心,用于处理请求、获取数据、返回结果。

关于MVC,有3点需要注意:

1.大部分开发语言中都有MVC框架;
2.MVC框架的核心思想是:解耦;
3.能降低各功能模块之间耦合性,方便变更,更容易重构代码,最大程度实现代码重用。

最后,Django架构模式:
MVT架构模式:在MVC基础上,对控制器controller进行了封装,增加了模块功能【Templates】实现前端网页【Html】
MVC架构模式:数据model–>视图views–>数据交互–>服务器–>控制器controller–>相应函数的调用。

到此这篇关于Django MTV模式的文章就介绍到这了,更多相关Django MTV模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Django MTV和MVC的区别详解

    在上一节<Django是什么>中,我们对 Django 的诞生以及 Web 框架的概念有了基本的了解,本节我们介绍 Django 的设计模式,也就是 MTV. 在 Web 开发领域还有另外一个非常著名的设计模式--MVC,它和 MTV 又有什么区别呢?这也是本节关注的重点内容. 1. MVC设计模式 我们先对 MVC 设计模式进行介绍,它是 Web 设计模式的经典之作,MTV 模式也是在它的基础上衍生而来. MVC 是 Model-View-Controller 的缩写,其中每个单词都有其不同

  • 如何使用django的MTV开发模式返回一个网页

    1.MTV开发模式介绍 M:Models 模型(数据) 与数据组织相关的功能.组织和存储数据的方法和模式,与数据模型相关的操作. T:Templates 模板(样式) 与表现相关的所有功能.页面展示风格和方式,与具体数据分离,用于定义表现风格. V:Views 视图(处理) 针对请求选取数据的功能.选择哪些数据用于展示,指定显示模板,每个URL对应一个回调函数. 2.新建一个应用 在django最快程序开发流程上继续改进. python manage.py startapp hello2app

  • 浅谈django三种缓存模式的使用及注意点

    django是动态网页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染,将字符串返回给用户,用户会看到相应的html页面.但是如果每次请求都从数据库中请求并获取数据,并且当用户并发量十分大的时候,这将服务器性能将大大受到影响.因此使用缓存能有效的解决这类问题.如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能

  • 快速解决Django关闭Debug模式无法加载media图片与static静态文件

    开发时,通常打开Debug模式会快速定位开发时的一些问题. 项目开始部署时,关闭Debug模式,url.py路由静态文件和图片写法: # url.py from django.views import static from django.conf import settings #路由静态文件和图片 urlpatterns = [ url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROO

  • Python Django 命名空间模式的实现

    新建一个项目 app02 在 app02/ 下创建 urls.py: from django.conf.urls import url from app02 import views urlpatterns = [ url(r'^blog/', views.test, name="blog"), ] app01/urls.py: from django.conf.urls import url from app01 import views urlpatterns = [ url(r'

  • 深入浅析Django MTV模式

    MVC模式 MVC, 全名Model View Controller, 是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model), 视图(View)和控制器(Controller), 具有耦合性低,重用性高.生命周期成本低等优点. MVT模式 模型:数据存储层,处理与数据相关的所有事务,例如如何存取.如何验证有效性.包含哪些行为以及数据之间的关系等.负责业务对象与数据库的对象(orm). 模板:表现层,处理与表现相关的决定,例如如何在页面或其他类型的文档中进行显示. Dja

  • 浅谈django开发者模式中的autoreload是如何实现的

    在开发django应用的过程中,使用开发者模式启动服务是特别方便的一件事,只需要 python manage.py runserver 就可以运行服务,并且提供了非常人性化的autoreload机制,不需要手动重启程序就可以修改代码并看到反馈.刚接触的时候觉得这个功能比较人性化,也没觉得是什么特别高大上的技术.后来有空就想着如果是我来实现这个autoreload会怎么做,想了很久没想明白,总有些地方理不清楚,看来第一反应真是眼高手低了.于是就专门花了一些时间研究了django是怎样实现autor

  • 浅析Activity启动模式

    前言 平常我们启动活动的时候就是直接startActivity或许并没有注意活动的启动模式,默认情况下都是以默认的启动模式启动.但启动模式有时候是比较重要的.例如一个活动你想他只启动一次不要有多个实例,那么你可能需要把他设置为singleTask模式.所以有必要了解一下这一些启动模式.同时要注意一下,启动模式≠启动方式,启动方式是指显示启动和隐式启动,不要混淆,显示启动和隐式启动后续我会有专门的文章讲解. 关于任务栈简介 要了解启动模式,首先要了解一下关于任务栈的概念.关于任务栈的实现原理等我在

  • 浅析Django接口版本控制

    一.前言 在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请求API,系统返回数据.但是难免在系统发展的过程中,不可避免的需要添加新的资源,或者修改现有资源.因此,改动升级必不可少,但是,作为平台开发者,应该知道:一旦API开放出去,有人开始用了,平台的任何改动都需要考虑对当前用户的影响.因此,做开放平台,从第一个API的设计就需要开始API的版本控制策略问题,API的版本控制策略就像是开放平台和平台用户之间的长期协议,其设计的好坏将直接决定用户是否使用该平台,

  • 浅析php工厂模式

    本系列文章来总结一下设计模式在PHP中的应用,这是第二篇创建型模式之工厂模式. 设计模式的一般介绍在第一篇文章讲了,这里就不重复. 工厂模式 实现:定义一个用于创建对象的接口,让子类决定实例化哪一个类. 应用场景:众多子类并且会扩充.创建方法比较复杂. 工厂模式分为三种:简单工厂.工厂方法.抽象工厂 , 三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化.而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样.但本质是,简单工

  • 浅析php原型模式

    原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 应用场景: 类的资源非常多.性能和安全要求,一般和工厂方法结合使用. 复制代码 代码如下: <?php /**  * 原型模式  */ //声明一个克隆自身的接口 interface Prototype {     function copy(); }   //产品要实现克隆自身的操作 class Student implements Prototype {        //简单起见,这里没有使用get set  

  • 浅析.net策略模式

    对于策略模式的理解:当一个业务有多种需求时候,在某个时候需要使用不同的方式来计算结果.这时候不同的方式可以理解为不同的策略来解决同样的问题. 例如:商场收银系统计算价格,1:正常计算 2:商品打折计算,3:满300减100等方式.就可以按三种策略来处理需求. 简单的说:策略模式就是用来封装算法的,但在实践中,我们发现可以用他来封装几乎任何类型的规则,只要在分析过程中听到需要在不同的时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性. 复制代码 代码如下: using System

  • 浅析php创建者模式

    创建者模式: 在创建者模式中,客户端不再负责对象的创建与组装,而是把这个对象创建的责任交给其具体的创建者类,把组装的责任交给组装类,客户端支付对对象的调用,从而明确了各个类的职责. 应用场景:创建非常复杂,分步骤组装起来. 复制代码 代码如下: <?php /**  * 创建者模式  */ //购物车 class ShoppingCart {        //选中的商品     private $_goods = array();     //使用的优惠券     private $_tick

随机推荐