私たちのアプリケーション(Django 1.8を実行中)では、辞書をrender()関数のcontextパラメータに渡してビューの一部として返すことによってテンプレートをレンダリングする傾向があります。たとえば:Djangoテンプレートコンテキストオブジェクトの目的は?
from django.views.generic import View
class HomePageView(View):
def get(self, request, *args, **kwargs):
context = {'foo': 'bar', 'foo2': 'bar2'}
return render(request, "page.html", context)
は今、私はそれを探し始めたので、私は、Djangoの「コンテキスト」オブジェクトではなく、辞書を使っている人の例を見ています。
from django.views.generic import View
from django.template import Context
class HomePageView(View):
def get(self, request, *args, **kwargs):
context = Context()
context['foo'] = 'bar'
context['foo2'] = 'bar2'
return render(request, "page.html", context)
ドキュメントはこのContextオブジェクトが辞書(ポップ、コピー、キーの割り当てなど)に類似した方法でと相互作用することができることを示しているとあなたが辞書にそれを比較することができますフラット化()メソッドを持っています。 https://docs.djangoproject.com/en/1.8/ref/templates/api/#playing-with-context。
私の質問です:辞書ではなくコンテキストオブジェクトを使用する理由はありますか?要求変数に簡単にアクセスしたい場合、誰かがどのようにRequestContextのサブクラスを見つけるのかを知ることができますが、私はコンテキストオブジェクトのユーティリティがないと思います。
ああ、私はテンプレートはコンテキストオブジェクトを必要とする方法に関するドキュメントにラインを逃していたが、レンダリング機能に辞書を渡すと*と* RequestContextのオブジェクトをインスタンス化ショートカット。知ってよかった、ありがとう! –