2016-05-17 9 views
0

Ich bekomme ein seltsames Problem in Jinja, ich habe eine Liste endpoints, die Wörterbuch für jede endpoint enthält. In jedem Wörterbuch gibt es einen Schlüssel tags, der eine Liste ist. Jedes Element in tags ist selbst ein Wörterbuch, in dem der Schlüssel value das Etikett eines Tags angibt. endpoint kann ähnliche Tags haben.Jinja Liste Ausgabe

Eine Probe abstrakte Darstellung eines kann endpoints Objekt sein:

[ {"tags":[{"value":"car"},{"value":"place"}]} , {"tags":[{"value":"van"},{"value":"place"}]} ] 

, was ich ist einzigartig Tags in einem div zu einfachen Anzeige möchten. Es ist einfach, eine Liste aller angezeigten Tags zu führen und beim Abrufen eines Tags zu überprüfen, ob es bereits in der Liste ist, und es nicht anzuzeigen und es der Liste hinzuzufügen. Seltsamerweise funktioniert es nicht.

Die Codes sind:

{% set tagValues = [] %} 
{% for endpoint in endpoints %} 
     {% for tag in endpoint["tags"]%} 
       {% set tagValue = tag["tag"]["value"] %} 
       {% if tagValue not in tagValues %} 
         {% set tagValues = tagValues + [tagValue] %} 
         <span >{{ tagValue }}</span></a> 
       {% endif %} 
     {% endfor %} 
{% endfor %} 

es nicht funktioniert, zum Beispiel für die enpoints Liste oben, ich bin die folgende Ausgabe bekommen:

car place van place 

es irgendein Problem mit den Codes ?

Antwort

1

Ich empfehle eine deutliche Liste von Tags in Ihrer Ansicht zu erstellen. z.B.

distinctTags = list(set([tag for endpoint in endpoints for tag in endpoint])) 

und nebenbei, dass zu Ihrer Vorlage

{% for tag in distinctTags %} 
    <span >{{ tagValue }}</span></a> 
{% endfor %} 

dies hat den Vorteil, der unterschiedliche Tag-Code ist wiederverwendbar und der Code weniger Verfahrens.

1

mein Jinja Wissen ist begrenzt, aber durch Hinzufügen von tagValues zur Ausgabe scheint es, dass es nach jeder Iteration der äußeren Schleife zurückgesetzt wird. Ich vermute, es hat mit Zielfernrohren zu tun, aber ich weiß es nicht.

Meine Empfehlung wäre, Ihren endpoints in regelmäßigen Python vorverarbeitet, bevor

nach Jinja vorbei
+0

ja, das ist was passiert, es ist das Zurücksetzen der Tag-Werte – Noor