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


118

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

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

在上面的示例中,forloop.counter返回最里面的for循环的计数器

Answers:


230

您可以使用forloop.parentloop到达外部forloop,因此在您的情况下{{forloop.parentloop.counter}}


14

你也可以使用

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

{% 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 %}

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

当有很多for循环时,这一点更加清楚


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.