为什么Django称其为"views.py"而不是控制器?

30 投票
2 回答
14845 浏览
提问于 2025-04-16 13:21

可能重复的问题:
对Django声称使用MVC感到困惑,这到底是什么?

因为在MVC架构中,“视图”通常指的是模板……

2 个回答

3

是的,Django 不是传统意义上的 MVC 框架。Django 更喜欢把它的 MVC 实现称为 MTV,意思是 模型 模板 视图

想了解更多关于 Django 和 MTV 的内容,可以看看 这篇博客

29

Django看起来像个MVC框架,但你们把控制器叫做“视图”,把视图叫做“模板”。为什么不使用标准名称呢?

其实,标准名称是可以争论的。

在我们理解的MVC中,“视图”指的是展示给用户的数据。它不一定是数据的样子,而是哪些数据被展示出来。视图描述的是你能看到哪些数据,而不是这些数据的展示方式。这是一个微妙的区别。

所以,在我们的例子里,“视图”就是某个特定网址的Python回调函数,因为这个回调函数描述了展示哪些数据。

此外,把内容和展示分开是很有道理的,这就是模板的作用。在Django中,视图描述的是展示哪些数据,但视图通常会委托给一个模板,模板则描述数据是如何展示的。

那么“控制器”又在哪里呢?在Django的情况下,可能就是框架本身:它负责根据Django的URL配置,把请求发送到合适的视图。

如果你喜欢缩写,可以说Django是一个“MTV”框架——也就是“模型”、“模板”和“视图”。这样分解起来更容易理解。

归根结底,最重要的是完成任务。无论名称如何,Django以我们最能理解的方式完成了任务。

撰写回答