zoukankan      html  css  js  c++  java
  • Django基础—— 5.MVC和MTV开发模式

    网页的运行机制

    从著名的MVC模式说起,所谓MVC就是吧Web应用分为模型(M)、控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入,调用模型和视图完成用户的请求,其实意图如下所示:

     Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同Django的MTV分别是指:

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

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

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

    除了以上三层之外,还需要一个URL分发器,他的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的相应模式如下所示:

    1、web服务器(中间件)收到一个Http请求

    2、Django在URL conf里查找对应的视图(View)函数开处理http请求

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

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

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

      这种设计模式关键的优势在于各种组件都是松耦合的。这样,每个由Django驱动的Web应用都有着明确的目的,并且可独立更改而不影响到其他的部分。

      比如,开发者更改一个应用程序中的URL而不用影响到这个程序底层的实现。设计师可以改变HTML页面的样式而不用接触Python代码。数据库管理员可以重新命名数据表并且只需更改模型,无需从一大堆文件中进行查找和替换。

    Django的MTV模式相对应的Python文件如下:

  • 相关阅读:
    python命令行传参详解,optparse模块OptionParse类的学习
    设计模式之共享模式
    用flask搭建一个测试数据生成器(v1.1)
    用flask搭建一个测试数据生成器(v1.0)
    jmeter中使用beanshell断言
    jmeter中beanshell脚本的使用
    从上帝视角看OS进程调度
    Linux网络内部原理系列
    从文件read/write一个字节的过程和所发生的磁盘IO
    深入理解系统中断(INTERUPT)
  • 原文地址:https://www.cnblogs.com/yz9110/p/9328828.html
Copyright © 2011-2022 走看看