Применить оператор if внутри цикла for в Python Jinja Tempaltes - PullRequest
0 голосов
/ 03 декабря 2018

Я получил этот простой шаблон HTML:

{% block html_page %}
    {% set counter = 1 %}    
    {% for field in fields %}
        COUNTER: {{ counter }} <br>
        {% set counter = counter+1 %}

    {% endfor %}

{% endblock %}

Где fields содержит 4 элемента.

Вывод:

COUNTER: 1 
COUNTER: 1 
COUNTER: 1 
COUNTER: 1

В то время как вывод язначение want должно быть с увеличением счетчика:

COUNTER: 1 
COUNTER: 2 
COUNTER: 3 
COUNTER: 4

Назначение счетчика выполняется ВНУТРИ цикла for, поэтому я не понимаю, почему он продолжает возвращаться к 1.

Любые предложения?

1 Ответ

0 голосов
/ 03 декабря 2018

Это не работает из-за правил определения объема в Jinja.

После Jinja 2.10, чтобы решить проблему с областью действия, вы можете сделать что-то вроде этого:

{% set count = namespace(a=0) %}
{% for field in fields %}
  {{ count.a }}
  {% set count.a = count.a + 1 %}
{% endfor %}

Или вы можетеиспользуйте loop.index:

{% for field in fields %}
  {{ loop.index }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...