【发布时间】:2014-09-17 21:17:42
【问题描述】:
根据 MVC 架构的定义和视图层的职责,我们可以说 Django 模板标签是视图层的一部分吗? 如果是真的,那么我们不应该在模板标签中访问我们的数据模型,所以 this answer 违反 MVC 架构规则?
【问题讨论】:
标签: python django model-view-controller django-templates
根据 MVC 架构的定义和视图层的职责,我们可以说 Django 模板标签是视图层的一部分吗? 如果是真的,那么我们不应该在模板标签中访问我们的数据模型,所以 this answer 违反 MVC 架构规则?
【问题讨论】:
标签: python django model-view-controller django-templates
从某种意义上说,我会说是的。
由于你的代码逻辑(模型)和你的视图(模板)逻辑是分开的,它会非常相似,你可以争论 URL.py 将作为你的控制器(路由器)
我会查看以下内容以更好地了解它更详细的内容。
类似的问题和解释。
【讨论】:
来自Django FAQ:
在我们对 MVC 的解释中,“视图”描述了呈现给用户的数据。不一定是数据的外观,而是呈现的数据。该视图描述了您看到的数据,而不是您如何查看它。这是一个微妙的区别。
然而,Django 更常被描述为“模型-视图-模板”架构(在常见问题解答中也是如此)。视图决定显示哪些数据,模板决定如何显示数据。从这个角度来看,模板不是视图的一部分。
对于这个特定的问题/答案,我想说这不属于模板标签。它不处理任何表示逻辑,而是处理数据的检索。这通常最好在视图中完成,或者如果数据应该在侧面可用,则在上下文处理器中完成。
【讨论】:
视图通常呈现数据。为此,它需要访问数据。是的,您希望保持视图和数据解耦。但你也必须对此保持理性。这是一个权衡。如果将数据复制到另一个日期结构中,即模型和视图之间的中间结构,则可能会使应用程序变慢。 另一种方法是不使用 django 模板,而只是通过 rest api 从 django 发回数据。但是如果您使用的是 django 模板,那么您提到的答案是合理的。
【讨论】: