Frage

Ich möchte nur eine vorhandene Liste durchlaufen und eine Comma -Abgrenzung daraus machen.
Etwas wie das: my_string = 'stuff, stuff, stuff, stuff'

Ich weiß schon von loop.last, Ich muss nur wissen, wie ich in meinem Code unten die dritte Zeile erstellen kann.

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
War es hilfreich?

Lösung

Wenn stuffs ist eine Liste von Saiten, nur dies würde funktionieren:

{{ stuffs|join(", ") }}

Verknüpfung zu Dokumentation.

Andere Tipps

Sie können verwenden + Wenn Sie alle Werte wissen, sind Strings. Jinja liefert auch die ~ Bediener, das sicherstellt, dass alle Werte zuerst in Zeichenfolge konvertiert werden.

{% set my_string = my_string ~ stuff ~ ', '%}

Mein schlechtes, bei dem Versuch, es zu vereinfachen, ging ich tatsächlich zu weit, tatsächlich stuffs ist eine Aufzeichnung aller Arten von Informationen, ich möchte nur die ID darin.

stuffs = [[123, first, last], [456, first, last]]

Ich will my_sting sein

my_sting = '123, 456'

Mein ursprünglicher Code sollte so aussehen:

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff.id + ', '%}
{% endfor%}

Darüber nachdenken, stuffs ist wahrscheinlich ein Wörterbuch, aber Sie bekommen den Kern.

Ja, ich habe das gefunden join Filter, und würde es so nähern:

 {% set my_string = [] %}
 {% for stuff in stuffs %}
 {% do my_string.append(stuff.id) %}
 {% endfor%}
 {%  my_string|join(', ') %}

Aber die Anhänge funktioniert nicht, ohne die Erweiterungen dafür zu importieren, und das Lesen dieser Dokumentation bereitete mir Kopfschmerzen. Es wird nicht ausdrücklich gesagt, wohin Sie es importieren sollen oder wohin Sie die Import -Erklärung abgeben würden. Deshalb stellte ich fest, dass es das kleinere der beiden Übel findet.

Nur ein weiterer Hack kann so sein.

Ich habe eine Reihe von Saiten, die ich verkürzen muss. Also fügte ich dieses Array in Wörterbuch hinzu und benutzte es dann in der Schleife, die funktionierte.

{% set dict1 = {'e':''} %}
{% for i in list1 %}
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
{% endfor %}
{% set layer_string = dict1['e'] %}

Wenn Sie nicht einfach den Filter -Join verwenden, sondern einige Vorgänge im Eintrag des Arrays ausführen müssen:

{% for entry in array %}
User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
{% if not loop.last %}, {% endif %}
{% endfor %}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top