困惑于Django的MVC说法,它到底是什么?
那么,Django到底在实现什么呢?
看起来有以下几个部分:
Models
Views
Templates
模型 = 数据库的映射
视图 = 从模型中获取相关数据,并通过模板进行格式化
模板 = 根据视图提供的数据来显示HTML
补充:S. Lott在之前的帖子中做了一些澄清,但我还是想听听其他人的看法。谢谢!
这样理解对吗?感觉Django和MVC根本不一样,反而让人更困惑,为什么要这么称呼呢?
1 个回答
24
Django的开发者对MVC(模型-视图-控制器)这个概念有点不同寻常的理解。他们在常见问题解答中提到过这个问题,你可以在这里查看。用他们自己的话来说:
在我们理解的MVC中,“视图”指的是展示给用户的数据。这并不一定是数据的外观,而是哪些数据被展示。视图描述的是你看到哪些数据,而不是你如何看到它。这是一个微妙的区别。
所以,在我们的情况下,“视图”就是某个特定网址的Python回调函数,因为这个回调函数描述了哪些数据被展示。
此外,将内容和展示分开是很合理的,这就是模板的作用。在Django中,视图描述的是哪些数据被展示,但视图通常会委托给一个模板,模板则描述了数据是如何被展示的。
那么“控制器”又在哪里呢?在Django的情况下,控制器可能就是框架本身:它负责根据Django的URL配置,将请求发送到合适的视图。