Wie greife ich auf den äußersten forloop.counter mit verschachtelten for-Schleifen in Django-Vorlagen zu?

118

Ist es möglich, in der folgenden Vorlage in Django auf den forloop.counter für die äußerste for-Schleife zuzugreifen:

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

forloop.counter gibt im obigen Beispiel den innersten for-Schleifenzähler zurück

Jamesaharvey
quelle

Antworten:

230

Sie können verwenden forloop.parentloop, um nach außen zu gelangen forloop, also in Ihrem Fall {{forloop.parentloop.counter}}.

Tom
quelle
14

Sie können auch mit verwenden

Zwischenspeichert eine komplexe Variable unter einem einfacheren Namen. Dies ist nützlich, wenn Sie mehrmals auf eine „teure“ Methode zugreifen (z. B. eine, die auf die Datenbank trifft).

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

Wenn Sie eine hohe Version von Django verwenden, können Sie diese verwenden

{% with outer_counter = forloop.counter %}

Ich habe überprüft, Django 1.4.x - Django 1.9.x unterstützen die beiden Methoden.

Dies ist klarer, wenn viele for-Schleifen vorhanden sind

WeizhongTu
quelle