如何理解 Django 框架

2018-03-01 阅读量

初用 Django 做开发,对于其总体设计有了初步的认识,在此稍作整理,如有错误欢迎指正

在谈及 Django 的设计模式之前,先简单的谈谈 MVC 与 MTV 模式:

MVC 模式 (Model - View - Controller)

  • Model : 模型,数据存取层
  • View :视图,处理数据显示的部分
  • Controller :控制器,也是业务逻辑层,是程序中处理用户交互的部分,通常控制器负责从视图 (View) 读取数据,并向模型 (Model) 发送数据
  • 最简易的 MVC 模式的工作流程大体是这样的:(单向通信)

    用户进行操作

    -> Web 服务端收到请求

    -> 页面请求 传送指令到控制器 (Controller)

    -> Controller 完成业务逻辑,调用模型 (Model) 处理数据

    -> Model 将新的数据发送回 View

    -> 用户看到反馈

    MTV 模式 (Model - Template - View)

    MTV 与 MVC 的区别在于 :

  • Template :模板,表现层,决定如何在页面中显示
  • View :视图,业务逻辑层,包含存取 Model、调用 Template 的相关逻辑
     
    除此之外:
  • URL 分发器 :将 URL 的 request 分发给不同的 View 处理  
     
  • 简易 MTV 模式的工作流程大体如下:

    用户对界面进行操作

    -> 服务端收到请求,并传送到 URL 分发器

    -> URL 分发器将每个 URL 的页面请求分发给不同的视图函数 (View) 处理

    -> View 调用相应的 Model 处理数据 以及 Template 引擎展现数据

    -> View 处理结束后返回一个 http 响应给 Web 服务端

    -> 用户看到反馈  
    其实 MTV 模式和 MVC 模式的本质是一样的,只是在定义上略有点不同


    对于 Django 的设计模式而言,很明显它是遵循 MVC 模式的,但由于这里的 Controller (控制器) 的功能由 Django 框架自身实现,进而将模式转变为了 MTV,工作流程如下:

     

    用户操作

    -> Web 服务端请求处理

    -> 请求传送到 Django 框架 (相当于 Controller),控制用户输入,进行 URL 匹配,用 URL 分发器将每个 URL 页面请求分发给合适的视图函数 (View)

    -> 调用相应的 Model 和 Template 处理数据:Model 进行数据的存取,Template 进行数据的呈现

    -> 在视图中,进行模式渲染,形成页面

    -> 用户看到反馈

     
     
    对于 Django 的设计模式理解暂且如此。以上。

    (如有更深的理解,随时更新 – flag)