霍格沃兹测试开发学社

《Python测试开发进阶训练营》(随到随学!)
2023年第2期《Python全栈开发与自动化测试班》(开班在即)
报名联系weixin/qq:2314507862

为什么很多人学 Django 会懵?因为没搞懂 MVC 和 MTV 的真正区别

很多刚接触 Django 的开发者,甚至包括不少测试工程师,在学习 Django 时都会遇到一个困惑:

为什么 Django 不叫 MVC,而是 MTV?

更奇怪的是:

很多教程还会说:

“Django 的 MTV 其实就是 MVC。”

这句话听起来很像,但其实 差别非常关键。

如果你理解了 MVC 和 MTV 的本质区别,你会突然发现:

Django 的架构其实非常适合大型系统开发和自动化测试。

今天我们就从软件工程和测试视角,彻底讲清楚这件事。

文章目录
MVC 设计模式到底解决什么问题
Django 为什么不用 MVC
Django 的 MTV 架构到底是什么
MVC vs MTV 架构对比
Django 模板层的核心作用
Django 模板配置实战
Django 加载模板的两种方式
视图与模板的数据交互机制
从测试视角理解 Django 架构
1 MVC 设计模式到底解决什么问题
在 Web 开发早期,很多系统都存在一个问题:

代码全部混在一起。

例如:

SQL 写在 HTML 里
业务逻辑写在页面里
数据处理写在控制器里
系统一旦复杂,维护几乎不可能。

于是软件工程领域提出了一个经典架构:

MVC

Model
View
Controller
三层职责分离。

MVC 架构示意
5ac42112-f718-478e-9b90-3c1055522f0d

请求流程:

1 用户发送请求 2 Controller 处理请求 3 Controller 调用 Model 获取数据 4 Controller 将数据传给 View 5 View 渲染页面 6 返回浏览器

MVC 三层职责
image

MVC 的核心思想只有一句话:

职责分离,降低耦合

2 Django 为什么不用 MVC
Django 的设计者在实践中发现一个问题:

在 Web 系统里,

Controller 经常非常臃肿。

很多事情都写在 Controller:

业务逻辑
数据查询
页面渲染
参数处理
于是 Django 的设计者做了一件事:

把 View 拆成两个部分。

一个负责:

数据

一个负责:

展示

于是 Django 提出了:

MTV 架构

3 Django 的 MTV 架构到底是什么
MTV =

Model
Template
View
结构如下:

451b7254-5d12-4215-bf3c-79db689c9aaf

MTV 三层职责
image

注意一个关键变化:

Controller 被弱化为 URL 路由系统。

也就是 Django 的:

urls.py
4 MVC vs MTV 架构对比
image

也就是说:

Django 的 View ≈ Controller

而 Django 的 Template ≈ MVC 的 View

这也是很多人刚学 Django 会懵的原因。

5 Django 模板层的核心作用
在 Django 里:

模板本质就是 HTML 文件。

但它不是普通 HTML。

它支持:

变量渲染
条件判断
循环
模板继承
模板的核心作用是:

动态生成页面。

数据流示意

f8f4301b-81f5-492d-b1d5-20c9fd32b5a8

6 Django 模板配置实战
要使用模板,首先需要配置。

第一步 创建 templates 目录
项目结构:

project
├─ manage.py
├─ project
│ ├─ settings.py

├─ templates
├─ index.html
第二步 修改 settings.py
找到:

TEMPLATES
修改 DIRS:

import os

TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
}
]
作用:

告诉 Django

HTML 模板在哪。

7 Django 加载模板的两种方式
Django 提供两种加载模板的方法。

方式一 loader
from django.template import loader
from django.http import HttpResponse

def index(request):

template = loader.get_template('index.html')

html = template.render()

return HttpResponse(html)

步骤:

1 获取模板 2 渲染模板 3 返回响应

代码稍微复杂。

方式二 render(推荐)
from django.shortcuts import render

def index(request):

return render(request,'index.html')

一行解决。

Django 官方也推荐这种方式。

8 视图与模板的数据交互机制
很多人刚学 Django 最困惑的一件事:

Python 数据怎么传到 HTML?

答案是:

通过字典。

View 代码
def index(request):

data = {
    "title": "Django课程",
    "user": "测试工程师"
}

return render(request,'index.html',data)

HTML 模板

{{ title }}

{{ user }}

模板变量使用:

{{ 变量名 }}
这样页面就能动态显示数据。

9 从测试视角理解 Django 架构
如果你是软件测试工程师,理解 MTV 其实非常重要。

因为它决定了:

系统的可测试性。

在 Django 中:

image

测试策略可以这样拆:

8cd95401-0b8b-4b96-a63d-382638fc0eb2

例如:

Model 测试:

ORM 查询
数据正确性
View 测试:

API接口
业务逻辑
Template 测试:

页面渲染
UI自动化
这种 架构级解耦,会让自动化测试更容易落地。

总结
今天我们讲清楚了三件事:

1 MVC 是经典架构

通过三层分离降低耦合。

2 Django 的 MTV 是 MVC 的演化

把展示逻辑进一步拆分。

3 模板层是 Django 前端渲染核心

负责动态 HTML 生成。

从软件测试角度看,MTV 结构还有一个巨大优势:

天然适合自动化测试。

因为:

业务逻辑、数据层、展示层完全分离。

这正是现代 Web 框架设计的核心思想。

如果你是做 测试开发 / 自动化测试 / AI测试工程师,理解 Django 架构其实非常重要。

因为很多企业内部的:

测试平台
自动化平台
AI测试助手
底层其实都是 Django 或 Flask 架构。

理解框架结构,测试才不会只是“点接口”。

而是真正理解:

系统是怎么运行的。

推荐学习
【0元入学·高薪就业】测试开发全日制学徒训练营免费学!
先学习后付费,拿Offer再交钱!学Python+AI大模型+智能体,实战互联网/金融/物联网真实项目。阿里/字节等大咖1对1辅导,简历优化+名企内推!就业率99%,平均起薪10k+,最高23k!
名额有限,扫码咨询更多优惠详情!

image

关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。

学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。

我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。

在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。

同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。

posted @ 2026-03-27 17:04  霍格沃兹测试开发学社  阅读(6)  评论(0)    收藏  举报