Conditionnellement joindre à une liste de chaînes à Jinja
J'ai une liste comme
users = ['tom', 'dick', 'harry']
Dans un Jinja
modèle que je voudrais imprimer une liste de tous les utilisateurs à l'exception tom
rejoint. Je ne peux pas modifier la variable avant qu'il n'atteigne le modèle.
J'ai essayé une compréhension de liste, et à l'aide de Jinja est reject
filtre mais je n'ai pas été en mesure de les faire fonctionner, par exemple
{{ [name for name in users if name != 'tom'] | join(', ') }}
donne une erreur de syntaxe.
Comment puis-je joindre les éléments de la liste conditionnellement?
Vous devez vous connecter pour publier un commentaire.
Utilisation
reject
filtre avecsameas
test:Mise à JOUR
Si vous êtes à l'aide de Jinja 2.8+, utilisez
equalto
au lieu desameas
comme @Dougal a commenté;sameas
tests avec Pythonis
, tandis queequalto
tests avec==
.equalto
test de la, introduit dans Jinja 2.8, maintenant serait mieux.sameas
tests avec Pythonis
, tandis queequalto
tests avec==
; pour les chaînes, grâce à la chaîne de stage, ces souvent, mais pas toujours d'accord.Cela devrait fonctionner, en tant que compréhension de liste n'est pas directement pris en charge. Bien sûr, le cas des filtres sera mieux.
Une autre solution avec "equalto" test au lieu de "sameas"
Utilisation rejeter filtre avec equalto test: