{% 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?
{% with … %}
模板标签[Django-doc]不用作变量赋值,它创建一个本地作用域变量。
所以在这种情况下,在 inner
{% with … %}
标签之间,将会有一个 Different count
变量,其值为 2,而外层仍然是 1。
但这不是模板的用途。 Django 的模板语言故意有点限制,以防止人们像您一样编写逻辑。此逻辑属于您“准备”要有效呈现的数据的视图。这会更好地分离关注点,而且 Django 的模板语言也不是很高效,因此只会显着减慢渲染速度。