Як отримати доступ до зовнішнього forloop.counter з вкладеними для циклів у шаблонах Django?


118

Чи можна отримати доступ до forloop.counter для самого зовнішнього циклу в наступному шаблоні в Django:

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

forloop.counter повертає найглибше для лічильника циклу у наведеному вище прикладі

Відповіді:


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 підтримує два методи.

це зрозуміліше, коли для циклів є багато


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.