Django与模型视图控制器

有人可以解释一下Django和Model View Controller模式之间的区别吗?

从function上来说,我们可以从这些差异中得到什么?也就是说,将Django与Ruby on Rails比较起来有什么不同?

根据Django Book ,Django非常接近MVC模式,被称为MVC框架。

Django被称为MTV框架,因为控制器是由框架自己处理的,大部分兴奋发生在模型,模板和视图中。

你可以在这里阅读更多有关MTV / MVC:

MTV(或MVC)发展模式

如果您熟悉其他MVC Web开发框架(例如Ruby on Rails),则可以将Django视图作为控制器 ,将Django模板视为视图

这是MVC的不同解释带来的一个不幸的混乱。

在Django对MVC的解释中, 视图描述了呈现给用户的数据; 不一定是数据的外观,而是显示哪些数据。

相比之下,Ruby on Rails和类似的框架表明,控制器的工作包括决定向用户呈现哪些数据,而视图严格地说是数据的外观,而不是显示哪些数据。

Django FAQ本身是一个体面的开始:

请记住,“模型视图控制器”只是一个模式,即试图描述一个共同的架构。 所以更好的问题可能是“Django如何适应模型视图控制器模式?”

在编写代码时,不要考虑框架的名称,例如RoR之间没有任何区别。 但是它取决于你给models的用途,因为在Django上它们很容易包含一些逻辑,在其他的框架上将会保持在控制器级别。

Django中的view往往是一组查询获取数据,并将其传递给模板。

在mvt中,对URL的请求被分派给一个View。 该视图调用模型,执行操作并准备输出数据。 数据被传递给一个模板,呈现为一个响应。 理想情况下,在Web框架中,控制器是隐藏的。

这与MVC的区别在于:在mvc中,用户与gui交互,控制器处理请求并通知模型,视图查询模型以向用户显示结果。