Django模板:变量有多灵活?
我需要在teplate中有一个变量,它基本上是for循环的计数器。问题是:我需要操作它,这取决于我正在处理的for元素,我必须重置计数器(for循环中的IF) 这在Django模板中可行吗 这基本上就是我想要的:Django模板:变量有多灵活?,django,django-templates,Django,Django Templates,我需要在teplate中有一个变量,它基本上是for循环的计数器。问题是:我需要操作它,这取决于我正在处理的for元素,我必须重置计数器(for循环中的IF) 这在Django模板中可行吗 这基本上就是我想要的: {% i = 0 %} {% for l in list %} {% if i == 5 %} {% i = 0 %} Do Something <br> {% else %} {% i = i
{% i = 0 %}
{% for l in list %}
{% if i == 5 %}
{% i = 0 %}
Do Something
<br>
{% else %}
{% i = i + 1 %}
{% endif %}
{% endfor %}
{%i=0%}
{列表%中的l的%1}
{%i==5%}
{%i=0%}
做点什么
{%else%}
{%i=i+1%}
{%endif%}
{%endfor%}
您需要的是Django的模板语言提供的forloop.counter
变量
您可以执行以下操作:
{% for element in list %}
{% if forloop.counter > 5 %}
Do something
{% else %}
Do something else
{% endif %}
{% endfor %}
如果你想循环地做一些事情,你基本上是在做一个模运算符(),不幸的是,Django模板没有这个功能,但是它允许一个“可除的被”运算符
因此,您将添加:
{% if {{ forloop.counter|divisibleby:"5" }} %}
{{ whatever }}
{% endif %}
您不能使用内置标记: 以下代码段可能是一个很好的起点:
编辑:对于记录,OP需要一个带divisibleby的条件。请参阅已接受的答案以及此答案中的注释。重置计数器是什么意思?你到底想干什么?我不明白。。。在您的示例中,您从未使用
i
执行任何操作。@averageman同样,这应该在后端完成,而不是在模板中完成。模板最好是像石头一样哑。@averageman如果你能在模板呈现之前在视图中对iterable进行排序,那就容易多了。好吧,它已经排序了,但我需要在HTML中每隔5个元素做一些事情(比如每5个元素做一次)@averageman您可以使用
forloop.counter“module”5
执行条件。我可以在Django模板中执行“counter module 5”吗?有点