django - Controller 逻辑和模板逻辑,分页在哪里划线?

标签 django model-view-controller django-templates

MVC 框架的全部意义在于将设计(模板)与逻辑( Controller )分开。然而,模板语言通常提供有限程度的“设计逻辑”。这包括基本的 if 语句、循环、过滤等。

我创建了一个 Django 模板标签,它可以接受任何列表或 QuerySet 并对其进行“分页”。它根据指定的页面大小将列表拆分为页面,然后将页面添加到上下文中。用法如下:

{% pagify articles by 20 as pages %}

然后我可以调用一个单独的包含来遍历页面并在我需要的地方生成一个很好的页面列表。

这似乎是一种最佳方式,因为它允许我在上下文中分页任何列表;我不必依赖 Controller 来返回分页结果。但是一位同事认为这对于模板来说似乎过于逻辑。我认为这仍然属于基于设计的逻辑领域,因为即使没有分页页面仍然可以运行,并且确定页面大小感觉就像是模板责任。

我的问题是,模板的逻辑是否太多?或者这是处理这个问题的一种干净的方式吗?

最佳答案

这么说吧;如果您在另一种媒体中使用您的数据模型,例如,不是在网络上,而是通过某种基于控制台的应用程序或后台任务,该怎么办?能够通过 Controller (或管理器)获取数据的“页面”而不是必须以某种方式依赖模板为您完成这项工作不是很好吗?

虽然我当然同意分页数据的“外观”应该由您的模板处理,但分页的“行为”应该留给 Controller (Django View )或什至通过某种自定义管理器(模型。经理)方法。

关于django - Controller 逻辑和模板逻辑,分页在哪里划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656143/

相关文章:

Django - 在模板中安全地呈现 HTML

django - 如何在 Django REST 框架的 ListAPIView 中使用多个值过滤一个字段?

python - 使用 Django 的用户帐户激活电子邮件

java - Spring MVC - 使用 @ExceptionHandler 处理异常不会呈现新 View

MVC 项目中的 Azure 应用程序洞察 - 实时指标您的应用程序处于离线状态或使用较旧的 SDK

django - Django模板中的分组CheckboxSelectMultiple

jquery - {% url %} 和 jquery

python - 在 Django 中从 View 导入模型

python - Django 模块未找到错误,但它已被删除并删除所有引用

model-view-controller - 模型如何更新 MVC 模式中的 View ?