带有“with”语句的django模板计数器

问题描述 投票:0回答:1
{% with counter=1 %}
    {% for order in sales %}
        <tr>
            {% ifchanged order.date and order.dealer %}
                <td scope="row">{{ counter }}</td>
                {% with counter=counter|add:1 %}
                {% endwith %}
            {% else %}
                <td></td>
            {% endifchanged %}
        </tr>
    {% endfor %}
{% endwith %}

为什么计数器一直为“1”?计数器如何在每次进入 ifchanged 语句时加 1?

django django-templates
1个回答
0
投票

{% with … %}
模板标签[Django-doc]用作变量赋值,它创建一个本地作用域变量。

所以在这种情况下,在 inner

{% with … %}
标签之间,将会有一个 Different
count
变量,其值为 2,而外层仍然是 1。

但这不是模板的用途。 Django 的模板语言故意有点限制,以防止人们像您一样编写逻辑。此逻辑属于您“准备”要有效呈现的数据的视图。这会更好地分离关注点,而且 Django 的模板语言也不是很高效,因此只会显着减慢渲染速度。

© www.soinside.com 2019 - 2024. All rights reserved.