У меня возникает проблема с переменной областью в Jinja, которая смещает таблицу. Я пытаюсь преобразовать текущий шаблон, который написан в Cheetah, в Jinja, но по какой-то причине этот блок логики не переводит и получает выход, что python еще более запутанный.Переменная Jinja не установлена правильно для цикла
Оригинальный код гепарда
#set $sname = ""
#for $serv in $proc:
#if $serv.id == $v[8]:
<td> $serv.shortname </td>
#set $sname = $serv.shortname
#end if
#end for
#if $sname == "":
<td><span style="color:#ff0000">Server not found</span></td>
#end if
Таким образом, требуемый выход кода выше цикл через некоторые объекты соответствуют идентификаторы к текущему объекту строк и обновить значение. затем проверьте, все ли значение равно null и печать не найдена сервером.
Дзиндзя код, который не работает
{% set sname = "" %}
{{ v[8] }}
{% for serv in proc %}
{% if serv.id == v[8] %}
<td> {{ serv.shortname }} </td>
{% set sname = serv.shortname %}
{% endif %}
{% endfor %}
{% if sname == "" %}
<td><span style="color:#ff0000">Server not found</span></td>
{% endif %}
Этот код вместо этого, если он правильно соответствует иды он печатает обе колонки, потому что вне цикла SNAME все еще установлен в положение «». Я попытался сделать сравнение внутри цикла, но напечатал что-то вроде
Сервер не найден | Имя_сервера | Сервер не найден
Аналогичные вопросы, касающиеся сферы применения в шаблонах Jinja2: http://stackoverflow.com/questions/4870346/can-a-jinja-variables-scope-extend-beyond-in-an-inner-block –