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

Antworten:


230

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


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


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.