2010-12-03 8 views
4

Django docs sayContextオブジェクトがスタックであること:Djangoのテンプレートでは、 `Context`はスタックです。何のために?

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}] 

コンテキストをスタックとして使用すると、いくつかのカスタムテンプレートタグで便利になる

ただし、 、その例はありません。私の提案:クリーンなコンテキストでサブテンプレートをレンダリングすると便利です。代わりに新しい空のContext()オブジェクトを使用することができます。

だから、ユースケースは何ですか?

答えて

1

ユースケースは、ループやテンプレートの継承などのスコープになります。

+1

ああ、本当に。私はそれを考えましたが、ドキュメントはそのような振る舞いは何も言いません:)そう:上位のスコープにキーがないと、それはさらに検索されます。キーが追加/変更されたとき、これらの変更は低いスコープに影響しません。 – kolypto