Django与模型视图控制器

时间:2011-07-08 08:05:50

标签: django model-view-controller frameworks

有人能解释一下Django与模型视图控制器模式之间的区别吗?

从功能上讲,我们可以从这些差异中得到什么 - 例如,将Django与Ruby on Rails进行比较的方式有何不同?

4 个答案:

答案 0 :(得分:120)

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

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

您可以在此处阅读有关MTV / MVC的更多信息:

The MTV (or MVC) Development Pattern

  

如果您熟悉其他MVC   Web开发框架,例如   Ruby on Rails,你可以考虑Django   视图是控制器和   Django模板是视图

     

这是一个令人遗憾的混乱   由不同的人带来   对MVC的解释。

     

在Django对MVC的解释中,视图   描述了呈现的数据   给用户;它不一定只是   数据的外观,但是数据是什么   呈现。

     

相比之下,Ruby on Rails   和类似的框架表明   控制器的工作包括决定   哪些数据呈现给用户,   而观点严格如何   数据看起来,而不是哪些数据   呈现。

答案 1 :(得分:19)

Django常见问题解答本身就是一个不错的起点:

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

答案 2 :(得分:10)

当你编码时,不考虑框架部分的名称,就没有任何可疑的差异,例如RoR。但这取决于你给出models的用途,因为在Django上它们很容易包含一些其他框架将保持在控制器级别的逻辑。

Django上的view往往是一组用于获取数据的查询,并将它们传递给模板。

答案 3 :(得分:6)

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

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