私はDjango初心者なので、コンテキストとコンテキストプロセッサの概念を理解しようとしています。
私はあなたの応答をたくさん感謝します。前もって感謝します!
Djangoテンプレートを使用する場合、テンプレートは一度だけ(一度だけ)コンパイルされ、将来の使用のために最適化として保存されます。テンプレートは_{{ myvar1 }}
_および_{{ myvar2 }}
_。
コンテキスト は、変数名がkeyであり、値がである辞書です値。したがって、上記のテンプレートのコンテキストが_{myvar1: 101, myvar2: 102}
_の場合、このコンテキストをテンプレートのrenderメソッドに渡すと、_{{ myvar1 }}
_は_101
_および_{{ myvar2 }}
_に置き換えられますテンプレートの_102
_。これは単純な例ですが、実際のContextオブジェクトは、テンプレートがレンダリングされるcontextです。
ContextProcessorに関しては、それは少し高度な概念です。 _settings.py
_ファイルには、HttpRequest
オブジェクトを取り込んで辞書を返すいくつかのコンテキストプロセッサをリストできます(上記のContextオブジェクトと同様)。 Context Processorによって返された辞書(コンテキスト)は、Djangoによってユーザー(ユーザー)から渡されたコンテキストにマージされます。
コンテキストプロセッサの使用例は、テンプレート内に特定の変数を常に挿入する場合です(たとえば、ユーザーの場所が候補になる可能性があります)。各ビューに挿入するコードを記述する代わりに、そのコンテキストプロセッサを記述して、それを_TEMPLATE_CONTEXT_PROCESSORS
_の_settings.py
_設定に追加することができます。
これが理にかなっていることを願っています。クラスを取ってくれてありがとう!
contextは、変数名->テンプレートに渡される変数値マッピング。
コンテキストプロセッサでは、それぞれに設定される変数の数を指定できますcontext自動的に-各render()呼び出しで変数を指定する必要はありません。
Context
は 公式ドキュメント で非常によく説明されています。要するに:
ヘルパー関数 があなたのためにContext
を構築するため、日々の使用で、ほとんど間接的に
1.を参照してください: 低レベルAPI を使用する場合にのみ必要です
いいえ、 コンテキストプロセッサ は、リクエストを受け取り、 RequestContext
でレンダリングされるすべてのテンプレートで使用可能な変数のディクショナリを返す関数です、 例えば:
def get_stuff_from_session(request):
return {'stuff': request.session['stuff']}