Django şablonlarında iç içe geçmiş for döngüleri ile en dıştaki forloop.counter'a nasıl erişilir?


118

Django'da aşağıdaki şablonda en dıştaki for döngüsü için forloop.counter'a erişmek mümkün mü:

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

forloop.counter yukarıdaki örnekte en içteki for döngü sayacını döndürür

Yanıtlar:


230

Dışa forloop.parentloopgitmek için kullanabilirsiniz forloop, yani sizin durumunuzda {{forloop.parentloop.counter}}.


14

ile de kullanabilirsiniz

Daha basit bir ad altında karmaşık bir değişkeni önbelleğe alır. Bu, "pahalı" bir yönteme (örneğin, veritabanına giren) birden çok kez erişirken yararlıdır.

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

Django'nun yüksek sürümünü kullanıyorsanız kullanabilirsiniz

{% with outer_counter = forloop.counter %}

Kontrol ettim, Django 1.4.x - Django 1.9.x iki yöntemi destekliyor.

çok sayıda döngü olduğunda bu daha açıktır


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.