0

我需要在 teplate 中有一个变量,它基本上是 for 循环的计数器。问题是:我需要操纵它,这取决于我正在处理的 for 元素,我将不得不重置计数器(for 循环内的一个 IF)。

这在 Django 模板中可行吗?

这基本上是我想要的:

{% i = 0 %}
{% for l in list %}
    {% if i == 5 %}
        {% i = 0 %}
        Do Something
        <br>
    {% else %}
        {% i = i + 1 %}
    {% endif %}
{% endfor %}
4

2 回答 2

1

你想要的是forloop.counterDjango 的模板语言提供的变量。

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 没有这个,但它确实允许“可分”由'运营商。

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#divisibleby

因此,您将添加:

{% if {{ forloop.counter|divisibleby:"5" }} %}
    {{ whatever }}
{% endif %}
于 2013-07-31T14:39:13.873 回答
1

您不能使用内置标签:

http://www.mail-archive.com/django-users@googlegroups.com/msg27399.html

以下片段可能是一个很好的起点:

编辑:为了记录,OP需要一个可除的条件。请参阅此处接受的答案以及此答案中的评论。

于 2013-07-31T14:42:23.613 回答