Я хотел бы сделать что-то вроде:
переменная p находится из test.py, которая представляет собой список ['a', 'b', 'c', 'd']
{% for i in p %}
{{variable++}}
{{variable}}
вывод результата: 1 2 3 4
Я хотел бы сделать что-то вроде:
переменная p находится из test.py, которая представляет собой список ['a', 'b', 'c', 'd']
{% for i in p %}
{{variable++}}
{{variable}}
вывод результата: 1 2 3 4
Вы можете использовать set
для увеличения счетчика:
{% set count = 1 %}
{% for i in p %}
{{ count }}
{% set count = count + 1 %}
{% endfor %}
Или вы можете использовать loop.index
:
{% for i in p %}
{{ loop.index }}
{% endfor %}
Проверьте конструктор шаблонов.
Как говорит Jeroen, есть проблемы с определением области охвата: если вы установите "count" вне цикла, вы не сможете изменить его внутри цикла.
Вы можете победить это поведение, используя объект, а не скаляр для "count":
{% set count = [1] %}
Теперь вы можете манипулировать счетом внутри forloop или даже% include%. Вот как я увеличиваю счет (да, это kludgy, но хорошо):
{% if count.append(count.pop() + 1) %}{% endif %} {# increment count by 1 #}
Здесь мое решение:
Поместите все счетчики в словарь:
{% set counter = {
'something1': 0,
'something2': 0,
'etc': 0,
} %}
Определите макрос, чтобы легко их увеличить:
{% macro increment(dct, key, inc=1)%}
{% if dct.update({key: dct[key] + inc}) %} {% endif %}
{% endmacro %}
Теперь, когда вы хотите увеличить счетчик "something1", просто выполните:
{{ increment(counter, 'something1') }}
Пришел поиск метода Django для этого и нашел этот пост. Возможно, кому-то еще понадобится решение django, которое придет сюда.
{% for item in item_list %}
{{ forloop.counter }} {# starting index 1 #}
{{ forloop.counter0 }} {# starting index 0 #}
{# do your stuff #}
{% endfor %}
Подробнее здесь: https://docs.djangoproject.com/en/1.11/ref/templates/builtins/