R / Richie全部文章 ↑

Python · 2 分钟阅读

MTV 设计模式

Django 借鉴 MVC 思想,演化出自己的 MTV 架构。

MVC 回顾

经典 MVC 将应用拆为三层,让职责清晰、模块解耦:

角色 职责
Model 数据存取,定义实体并提供增删改查
View 表现层,决定如何展示数据
Controller 控制层,接收输入、调度 Model、驱动 View

Django 的 MTV

Django 把 Controller 这层交给框架本身(URLconf + 视图函数),因此对外强调三层:

  • M(Model) — 数据层:ORM 把 Python 类映射成数据库表
  • T(Template) — 表现层:DTL 模板负责页面渲染
  • V(View) — 业务层:接收请求、与 Model 交互、选择 Template
Request ──► URLconf ──► View ──► Model ──► DB
                              │
                              ▼
                           Template ──► Response

与 MVC 的对照

MVC Django MTV 说明
Model Model 数据层,概念一致
View Template 表现层
Controller View 业务处理
路由 URLconf 框架内置

所以,Django 本质上仍是 MVC 框架,只是 Controller 的角色由 URLconf + 视图共同承担,开发者更聚焦于 M、T、V 三件事。

价值

  • 低耦合:数据、表现、业务各自独立演进
  • 高复用:同一 Model 可被多种 Template 复用
  • 易测试:每层都可独立构造测试用例