Django:问题{%cycle%}
-
07-07-2019 - |
题
这是直接从我的Django模板中获取的:
{% for day in days %}
<!-- {% cycle 'day' 'day' 'day last' as cls %} -->
{% rounded "black" cls %} {# Custom tag giving me rounded borders. #}
...
{% endrounded %}
{% endfor %}
我已经注释掉了 {%cycle%}
,因为我只用它来设置“ cls
”到“ day last
”循环中的每三次迭代。有没有更好的方法来做到这一点,而不向视图添加任何代码? (人们说逻辑应该不在模板之内,但反过来却差不多了。)
解决方案
我不确定我理解您遇到问题的原因,因为您当前的解决方案似乎有效。我不认为你需要HTML注释,因为 {%cycle%}
和 as
没有输出任何东西,但除此之外它看起来很好。
但是,如果您想要其他方法,可以使用 divisibleby
过滤器:
{% for day in days %}
{% if forloop.counter|divisibleby:3 %}
{% rounded "black" "day last" %}
{% else %}
{% rounded "black" "day" %}
{% endif %}
{% endfor %}
但我不认为这比你已经有的好。
其他提示
应用程序逻辑不应该在您的模板中。表示逻辑确实属于那里(这似乎是这样)。我把它放在那里。
嗯......这就是 cycle
标签的用途。我不知道你为什么试图避免它,但你应该知道:
- 任何需要选择性应用某些规则的逻辑都需要python代码,因为模板代码不会分配给变量。
- 必须从模板标签或视图函数逻辑调用python代码。 醇>
因此,如果你不使用视图逻辑,你就会遇到模板标签。要么你自己编写,要么使用内置的。 cycle
似乎和其他任何一样简单。有什么问题。
不隶属于 StackOverflow