Je veux juste parcourir une liste existante et en faire une chaîne délimitée par des virgules.
Quelque chose comme ça: my_string = 'stuff, stuff, stuff, stuff'
Je connais déjà loop.last
, je dois juste savoir comment faire la troisième ligne de mon code ci-dessous WORK.
{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
Si stuffs
est une liste de chaînes, cela fonctionnerait:
{{ stuffs|join(", ") }}
Lien à la documentation.
Mon mal, en essayant de le simplifier, je suis allé trop loin, en fait, stuffs
est un enregistrement de toutes sortes d’informations, je veux juste l’identifiant.
stuffs = [[123, first, last], [456, first, last]]
Je veux que my_sting
soit
my_sting = '123, 456'
Mon code original aurait dû ressembler à ceci:
{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff.id + ', '%}
{% endfor%}
En y réfléchissant, stuffs
est probablement un dictionnaire, mais vous obtenez le Gist.
Oui, j'ai trouvé le filtre join
et j'allais l'approcher comme suit:
{% set my_string = [] %}
{% for stuff in stuffs %}
{% do my_string.append(stuff.id) %}
{% endfor%}
{% my_string|join(', ') %}
Mais append ne fonctionne pas sans importer les extensions, et la lecture de cette documentation m'a donné mal à la tête. Il ne dit pas explicitement où importer ou même où vous placeriez la déclaration d'importation. J'ai donc pensé que trouver un moyen de concaténer serait le moindre des deux maux.
Juste un autre hack peut être comme ça.
J'ai un tableau de chaînes que je dois concaténer. J'ai donc ajouté ce tableau au dictionnaire, puis je l'ai utilisé à l'intérieur d'une boucle qui fonctionnait.
{% set dict1 = {'e':''} %}
{% for i in list1 %}
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
{% endfor %}
{% set layer_string = dict1['e'] %}
Si vous ne pouvez pas simplement utiliser une jointure de filtre mais devez effectuer certaines opérations sur l'entrée du tableau:
{% for entry in array %}
User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
{% if not loop.last %}, {% endif %}
{% endfor %}