Самый простой способ справиться с этим, чтобы переместить логика, которая устанавливает переменную disabled
в функцию просмотра и отправляет ее в шаблон, готовый к использованию. Смешение логики приложения с презентацией - не очень хорошая идея, шаблоны должны получать данные как можно более усвоенные.
Это говорит о том, что есть уродливый взлом, который делает то, что вы хотите, показано в принятом ответе на this question.
Решение включает в себя расширение do
для Jinja2 и использование его для изменения глобального массива. Чтобы разрешить использование расширения:
app.jinja_env.add_extension('jinja2.ext.do')
Вот решение, адаптированное к вашему примеру:
{% set disabled = [] %}
{% for voter in record.voters %}
{% if user == voter %}
{% do disabled.append(1) %}
{% endif %}
{% endfor %}
{% if disabled %}
disabled
{% endif %}
thx , Я уже пересмотрел свой код и сделал то, что вы предлагали вначале. –