Ответ 1
Вы не можете использовать break
, вместо этого вы будете фильтровать. Из документа Jinja2 на {% for %}
:
В отличие от Python его невозможно разбить или продолжить в цикле. Тем не менее, вы можете фильтровать последовательность во время итерации, которая позволяет пропустить элементы. В следующем примере пропускаются все скрытые пользователи:
{% for user in users if not user.hidden %} <li>{{ user.username|e }}</li> {% endfor %}
В вашем случае, однако, вам кажется, что нужен только первый элемент; просто отфильтруйте и выберите первый:
{{ (pages|selectattr('tags.foo', bar)|first).title }}
Это фильтрует список, используя фильтр selectattr()
, результат которого передается first
filter.
Фильтр selectattr()
создает итератор, поэтому использование first
здесь будет выполнять только итерацию по входу до первого совпадающего элемента, а не дальше.