我需要在teplate中有一个变量,它基本上是for循环的计数器。问题是:我需要操作它,取决于我正在处理的for-element,我将不得不重置计数器(for循环中的IF)。
这是否可以在Django模板中使用?
这基本上就是我想要的:
{% i = 0 %}
{% for l in list %}
{% if i == 5 %}
{% i = 0 %}
Do Something
<br>
{% else %}
{% i = i + 1 %}
{% endif %}
{% endfor %}
答案 0 :(得分:1)
你想要的是Django模板语言提供的forloop.counter
变量。
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
您可以这样做:
{% for element in list %}
{% if forloop.counter > 5 %}
Do something
{% else %}
Do something else
{% endif %}
{% endfor %}
如果你想循环地做一些事情,你基本上做了一个模运算符(http://en.wikipedia.org/wiki/Modulo_operation),不幸的是,Django Template并没有这个,但它确实允许'divisible by'运算符。
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#divisibleby
所以你要添加:
{% if {{ forloop.counter|divisibleby:"5" }} %}
{{ whatever }}
{% endif %}
答案 1 :(得分:1)
你不能使用内置标签:
http://www.mail-archive.com/django-users@googlegroups.com/msg27399.html
以下摘录可能是一个很好的起点:
编辑:对于记录,OP需要一个带有divisibleby的条件。请参阅接受的答案here以及此答案中的评论。