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 复用
- 易测试:每层都可独立构造测试用例