这是直接从我的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
”。有没有更好的方法来做到这一点,而不向视图添加任何代码? (人们说逻辑应该不在模板之内,但反过来却差不多了。)
答案 0 :(得分:3)
我不确定我理解您遇到问题的原因,因为您当前的解决方案似乎有效。我认为您不需要HTML注释,因为{% cycle %}
as
并没有输出任何内容,但除此之外它似乎没问题。
但是,如果您想要其他方法,可以使用divisibleby
过滤器:
{% for day in days %}
{% if forloop.counter|divisibleby:3 %}
{% rounded "black" "day last" %}
{% else %}
{% rounded "black" "day" %}
{% endif %}
{% endfor %}
但我不认为这比你已经有的好。
答案 1 :(得分:3)
'Django开发版的新功能'
循环'as'标签现在具有'静音'模式:
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#cycle
答案 2 :(得分:0)
应用程序逻辑不应该在您的模板中。表示逻辑确实属于那里(这似乎是这样)。我把它放在那里。
答案 3 :(得分:0)
嗯......这就是cycle
标签的用途。我不知道你为什么试图避免它,但你应该知道:
因此,如果你不使用视图逻辑,你就会遇到模板标签。要么你自己写,要么使用内置的。cycle
似乎和其他任何一样容易。有什么问题。