Si j'ai une liste de users
dire ["Sam", "Bob", "Joe"]
, je veux faire quelque chose où je peux sortir dans mon fichier de modèle jinja:
{% for user in userlist %}
<a href="/profile/{{ user }}/">{{ user }}</a>
{% if !loop.last %}
,
{% endif %}
{% endfor %}
Je veux que le modèle de sortie soit:
Sam, Bob, Joe
J'ai essayé le code ci-dessus pour vérifier s'il s'agissait de la dernière itération de la boucle et sinon, n'insérez pas de virgule, mais cela ne fonctionne pas. Comment puis-je faire cela?
!
comme opérateur de négation. "non" est orthographié "non".Réponses:
Vous voulez que votre
if
chèque soit:Notez que vous pouvez également raccourcir le code en utilisant If Expression :
la source
{{ "," if not forloop.last }}
{{ "," if not loop.last else "" }}
vous pouvez également utiliser le filtre "join" intégré ( http://jinja.pocoo.org/docs/templates/#join comme ceci:
la source
ansible -i localhost, all -m debug -a "msg=\"{{ [ 'a','b','c' ]|join('X') }}\""
Et en utilisant le
joiner
de http://jinja.pocoo.org/docs/dev/templates/#joinerIl est fait exactement dans ce but. Normalement, une jointure ou une vérification de forloop.last suffirait pour une seule liste, mais pour plusieurs groupes de choses, c'est utile.
Un exemple plus complexe sur la raison pour laquelle vous l'utiliseriez.
la source
Le code suivant a fonctionné en utilisant le filtre de jointure jinja2 suggéré par Uli Martens dans le shell python3.5:
la source