2017-05-20 4 views
0

Ich arbeite mit dem folgenden Wörterbuch in einer Kolben-App und kann nicht herausfinden, wie die verschachtelten Wörterbuchwerte in einer Jinja2-Vorlage ausgewählt werden.Flask Jinja2 Vorlagenwörterbuch in einem Wörterbuch

dict = {"key1": {"subkey1":"subvalue1","subkey2":"subvalue2","subkey3":"subvalue3"}, "key2": {"subkey1":"subvalue1","subkey2":"subvalue2","subkey3":"subvalue3"}} 

ich in der Lage bin zu jedem Wert in einem Python-Shell zu erhalten, wie so:

print(dict['key1']['subkey1']) 
print(dict['key1']['subkey2']) 
print(dict['key1']['subkey3']) 

ich die dict auf die Vorlage wie so schickte:

return render_template('template.html', dict=dict) 

Und dann in Meine Versuche an einer Vorlage habe ich:

{% for item in dict %} 
    <td>{{ item.subkey1 }}</td> 
    <td>{{ item.subkey2 }}</td> 
    <td>{{ item.subkey3 }}</td> 
{% endfor %} 

Aber das liefert nicht die Subvalues, wie ich es mir erhofft hatte.

+0

Warum würde es anders sein? Wenn Sie Probleme haben, sollten Sie Ihre Vorlage und den 'render_template' Aufruf zeigen. –

+0

Genau wie @DanielRoseman wies darauf hin ... Teilen Sie den Teil, wo 'dict' in Vorlage HTML implementiert ist. –

+0

Entschuldigung, ich habe jetzt ein bisschen mehr Informationen zu meiner Frage hinzugefügt. –

Antwort

1
{% for key1,item1 in dict.items() %} 
    {% for key2,nested_item in item1.items() %} 
     <td> {{nested_item}} </td> 
    {% endfor %} 
{% endfor %} 

dict.item() zum Abrufen von Schlüsseln und Produkte im Wörterbuch dict verwendet wird.

Für den Zugriff auf ein Wörterbuch wird 1 Schleifenebene benötigt, für den Zugriff auf das Wörterbuch des Wörterbuchs sind 2 Schleifenebenen erforderlich.

+1

Vielen Dank für Ihre Hilfe Prashant, das ist genau das, was ich gesucht habe. Entschuldigung, wenn es wie ein echtes NOOB-Ding aussieht, aber ich konnte es einfach nicht verstehen! Danke allen. –

+0

@RyanKowalewski Vertrauen Sie mir, ich war und bin immer noch noob ich .. Ich kenne den Stress, dass eine einzige Zeile Code verursachen kann .. –

0

Dieses Problem hängt überhaupt nicht mit Jinja zusammen.

Wenn Sie über ein Diktat mit for x in y iterieren, erhalten Sie nur die Schlüssel, nicht die Werte. Wenn Sie über die Werte zu durchlaufen wollen, müssen Sie das explizit tun:

{% for item in dict.values() %} 
+0

Danke Daniel, das hat mir bei den Unterwerten geholfen. Wie kann ich zB in derselben for-Schleife auf den Schlüssel1 zugreifen? –

Verwandte Themen