2010-12-03 2 views
4

Django docs say dass Context Objekt ist ein Stapel:In Django-Vorlagen ist `Context` ein Stapel. Wozu?

from django.template import Context 
c = Context() 
c['a'] = 1 
c.push() # Make a new Context level 
c['a'] = 2 
print(repr(c)) # [{'a': 1}, {'a': 2}] 

Auch die docs sagen

einen Kontext Verwendung als ein Stapel praktisch ist, in einigen benutzerdefinierten Vorlagen-Tags

jedoch Es gibt kein Beispiel dafür. Mein Vorschlag: Es ist nützlich, ein Subtemplate mit einem sauberen Kontext zu rendern. aber man kann stattdessen einfach ein neues leeres Context() Objekt verwenden.

Also, was ist der Anwendungsfall?

Antwort

1

Der Anwendungsfall wäre ein Scoping, beispielsweise in Schleifen und Template-Vererbung.

+1

Oh, wirklich. Ich habe darüber nachgedacht, aber die Docs sagen nichts von einem solchen Verhalten :) SO: wenn ein Schlüssel im oberen Bereich fehlt - es wird weiter gesucht. Wenn ein Schlüssel hinzugefügt/geändert wird, wirken sich diese Änderungen nicht auf niedrigere Bereiche aus. – kolypto