MVC 框架的全部意义在于将设计(模板)与逻辑(控制器)分开。然而,模板语言通常提供有限程度的“设计逻辑”发生。这包括基本的 if 语句、循环、过滤等。
我创建了一个 Django 模板标签,它可以接受任何列表或 QuerySet 并“分页”它。它根据指定的页面大小将列表拆分为页面,然后将页面添加到上下文中。用法如下:
{% pagify articles by 20 as pages %}
然后我可以调用一个单独的包含来遍历页面,并在我需要的地方生成一个漂亮的页面列表。
这似乎是一种最佳方式,因为它允许我在上下文中对任何列表进行分页;我不必依赖控制器来返回分页结果。但一位同事认为,这对于模板来说似乎过于逻辑。我认为这仍然属于基于设计的逻辑领域,因为即使没有分页,页面仍然可以运行,并且确定页面大小感觉像是模板的责任。
我的问题是,模板的逻辑是否太多?或者这是一种干净的方式来处理这个?