You can't use break
, you'd filter instead. From the Jinja2 documentation on {% for %}
:
Unlike in Python it’s not possible to break or continue in a loop. You can however filter the sequence during iteration which allows you to skip items. The following example skips all the users which are hidden:
{% for user in users if not user.hidden %}
<li>{{ user.username|e }}</li>
{% endfor %}
In your case, however, you appear to only need the first element; just filter and pick the first:
{{ (pages|selectattr('tags.foo', 'eq', bar)|first).title }}
This filters the list using the selectattr()
filter, the result of which is passed to the first
filter.
The selectattr()
filter produces an iterator, so using first
here will only iterate over the input up to the first matching element, and no further.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…