为什么Django称其为"views.py"而不是控制器?
可能重复的问题:
对Django声称使用MVC感到困惑,这到底是什么?
因为在MVC架构中,“视图”通常指的是模板……
2 个回答
29
Django看起来像个MVC框架,但你们把控制器叫做“视图”,把视图叫做“模板”。为什么不使用标准名称呢?
其实,标准名称是可以争论的。
在我们理解的MVC中,“视图”指的是展示给用户的数据。它不一定是数据的样子,而是哪些数据被展示出来。视图描述的是你能看到哪些数据,而不是这些数据的展示方式。这是一个微妙的区别。
所以,在我们的例子里,“视图”就是某个特定网址的Python回调函数,因为这个回调函数描述了展示哪些数据。
此外,把内容和展示分开是很有道理的,这就是模板的作用。在Django中,视图描述的是展示哪些数据,但视图通常会委托给一个模板,模板则描述数据是如何展示的。
那么“控制器”又在哪里呢?在Django的情况下,可能就是框架本身:它负责根据Django的URL配置,把请求发送到合适的视图。
如果你喜欢缩写,可以说Django是一个“MTV”框架——也就是“模型”、“模板”和“视图”。这样分解起来更容易理解。
归根结底,最重要的是完成任务。无论名称如何,Django以我们最能理解的方式完成了任务。