2016-03-30 14 views
2

So habe ich diese Liste der Wörterbücher:verschachtelte Wörterbuch Zugriff mit Jinja2 Templating

mylist = [{'Score': 33, u'interfaces': [{u'ip_addresses': [{u'value': u'172.16.153.71', }]}]}] 

Ich möchte mit jinja2 den ‚Wert‘ Schlüssel zuzugreifen.

Allerdings kann ich einfach nicht die Syntax dafür richtig bekommen. Ich weiß, es wird wahrscheinlich drei für Schleifen in einander geben, aber ich kann es nicht richtig machen.

Ich kann, wie es in Python tun:

for i in mylist: 
    for x in i['interfaces']: 
    for y in x['ip_addresses']: 
     print y["value"] 

Also vielleicht so etwas wie dies ?:

  {% for obj in mylist %} 
       {%for obj2 in obj %} 
       {for obj3 in obj2 %} 
        {{ obj3.value }}", 
       {% endfor % } 
       {% endfor % } 
      {% endfor % } 

Aber das offensichtlich nicht funktioniert. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

+1

Wie rufen Sie die Vorlage? Ihre Variable wird "Meine Liste" genannt, aber diese erscheint nirgendwo in Ihren Vorlagen. – larsks

+0

Oh sorry lol. Ich habe den Namen für diesen Beitrag geändert ... Woops. Ich werde es bearbeiten, um mehr Sinn zu machen. –

Antwort

2

Vergleichen wir Ihre Python-Schleife mit Ihrer Jinja-Schleife. Die äußere Python-Schleife ist:

for i in mylist: 

und die entsprechende Jinja Schleife ist:

{% for obj in mylist %} 

Das sieht gut aus. Aber während der nächste Python-Schleife wie folgt aussieht:

for x in i['interfaces']: 

Ihre entsprechende Jinja Schleife ist:

{%for obj2 in obj %} 

das ist natürlich nicht das gleiche tun; und da Sie bereits die Logik Ihrer Python-Schleife haben, ist nicht klar, warum Sie diese Änderung vorgenommen haben. Die äquivalente Schleife wäre:

{% for obj2 in obj.interfaces %} 

Oder:

{% for obj2 in obj['interfaces'] %} 

..., die sich enger an den Python übereinstimmt, ist aber weniger idiomatische für Jinja. Sie haben das gleiche Problem mit der nächsten verschachtelten Schleife.

Wenn Sie Ihre JInja-Loops neu schreiben, um einfach der Python-Logik zu folgen, sollten Sie alles einstellen.

Verwandte Themen