jinja2 rekursive Schleife vs Wörterbuch

8

Ich habe das folgende Wörterbuch:

%Vor%

Und das folgende Jinja2 Template:

%Vor%

Aber Jinja2 gibt immer aus:

%Vor%

Ich verstehe, dass rekursiv, würde es mir auch das "c" -Element zeigen, aber es funktioniert nur für eine Tiefe von 2. Warum wird dictionary nicht zu dictionary[key] bei jeder Schleife Iteration? Der dictionary ist immer der ursprüngliche dictionary .

    
Tarantula 09.12.2011, 23:30
quelle

2 Antworten

9

Sie haben Recht, dictionary wird in den Rekursionsaufrufen nicht aktualisiert, und die Schleife kann nicht fortgesetzt werden, weil die Schlüssel nicht gefunden werden.

Um dieses Problem zu umgehen, verwenden Sie nur die Variablen, die in der for-Schleife zugewiesen sind. Im Wörterbuchbeispiel bedeutet dies, dass die Elemente des Wörterbuchs anstatt nur der Schlüssel durchlaufen werden:

%Vor%

Die Ausgabe dieses Skripts lautet:

%Vor%

Hier können Sie sehen, dass die Rekursion für den b -Schlüssel funktioniert, weil sowohl key als auch value bei jeder Iteration der Schleife aktualisiert werden (Ich habe die "Recursive key, value" -Nachricht zur Vorlage hinzugefügt es klar).

    
jcollado 10.12.2011, 11:45
quelle
0

versuche so etwas:

%Vor%

Ich denke, Sie müssen ein iterables in das loop() Konstrukt übergeben.

    
Kevin Horn 10.12.2011 00:32
quelle

Tags und Links