如何在 Django 模板中使用嵌套的 for 循环访问最外层的 forloop. counter?

是否可以在 Django 中的下面模板中访问最外层 for 循环的 forloop. counter:

{% for outerItem in outerItems %}
{% for item in items%}
<div>{{ forloop.counter }}.&nbsp;{{ item }}</div>
{% endfor %}
{% endfor %}

Counter 返回上面示例中最里面的 for 循环计数器

42552 次浏览

您可以使用 forloop.parentloop来到达外部 forloop,因此在您的例子中是 \{\{forloop.parentloop.counter}}

你也可以使用 < strong > 和

以更简单的名称缓存复杂变量。这在多次访问“昂贵”的方法(例如,访问数据库的方法)时非常有用。

{% for outerItem in outerItems %}
{% with forloop.counter as outer_counter %}
{% for item in items%}
<div>\{\{ outer_counter }}.&nbsp;\{\{ item }}</div>
{% endfor %}
{% endwith %}
{% endfor %}

如果使用高版本的 Django 你可以利用

{% with outer_counter=forloop.counter %}

注意: With 不允许在 =之前或之后使用空格

我已经检查过了,Django 1.4.x-Django 1.9.x 支持这两种方法。

当有许多 for 循环时,这一点更加明显

在某些情况下,forloop.parentloop是不够的。

查看 Django-templateaddons 3及其 {% counter% }标记以获得成熟的解决方案。