Comment puis-je briser une boucle for dans jinja2?
Comment puis-je sortir d'une boucle for dans jinja2?
mon code ressemble à ceci:
<a href="#">
{% for page in pages if page.tags['foo'] == bar %}
{{page.title}}
{% break %}
{% endfor %}
</a>
J'ai plus d'une page qui a cette condition, et je veux la fin de la boucle, une fois que la condition a été remplie.
- il y a une extension pour ça : extensions/#boucle de contrôle
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser
break
, vous auriez du filtre à la place. À partir de la Jinja2 documentation sur{% for %}
:Dans votre cas, cependant, vous n'avez besoin de la première élément; il suffit de filtrer et de sélectionner la première:
Cela permet de filtrer la liste à l'aide de la
selectattr()
filtre, dont le résultat est transmis à lapremier
filtre.La
selectattr()
filtre produit un itérateur, afin de l'utiliserfirst
ici ne fera que se répéter sur l'entrée du premier élément correspondant, et rien de plus.|first
filtre d'autre part de s'assurer que pas tout le dataset est itéré;selectattr()
utilise l'itération, il n'est pas de produire une toute nouvelle liste, de sortefirst
seulement besoin d'itération jusqu'à le premier élément correspondant.slice()
et en utilisant uniquement le premier lot.for
format doit êtrefor x in y
seulementPause et Continuer peut être ajouté à Jinja2 à l'aide de la boucle de contrôle de l'extension.
Jinja De Contrôle De La Boucle
Juste ajouter l'extension à la jinja environnement.
comme par sb32134 commentaire
Mais si pour une raison quelconque besoin d'une boucle, vous pouvez vérifier l'indice de boucle à l'intérieur de la boucle bloc à l'aide d'une boucle.d'abord":