Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板:变量有多灵活?_Django_Django Templates - Fatal编程技术网

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

我需要在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 %}
{%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”吗?有点