2014-01-06 7 views
19

私はdjango初心者ですので、コンテキストとコンテキストプロセッサの概念を理解しようとしています。Djangoのコンテキストとは何ですか?

  • コンテキストとは何ですか、なぜそれを使用しますか?
  • テンプレートで使用するためにコンテキストに値が必要ですか?
  • コンテキストとコンテキストプロセッサは同じですか?

私はあなたの応答をたくさん感謝します。前もって感謝します!

+4

ために。 –

答えて

42

Djangoテンプレートを使用すると、最適化のためにDjangoテンプレートは1回(1回のみ)コンパイルされ、将来の使用のために保存されます。テンプレートは、二重中括弧で変数名を持つことができます(例えば、 {{myvar1}}、{{myvar2}})。

コンテキストは、変数名を「キー」、値を「値」とする辞書です。したがって、上記のテンプレートのコンテキストが{myvar1:101、myvar2:102}のように見える場合、このコンテキストをテンプレートレンダリングメソッドに渡すと、{{myvar1}}は101に、{{myvar2}}は102に置き換えられますあなたのテンプレートに。これは単純な例ですが、実際にはContextオブジェクトはテンプレートがレンダリングされる「コンテキスト」です。

ContextProcessorに関しては、少し高度な概念です。 settings.pyファイルに、HttpRequestオブジェクトを取り込み、辞書を返すいくつかのコンテキストプロセッサをリストアップすることができます(上記のContextオブジェクトに似ています)。コンテキストプロセッサによって返された辞書(コンテキスト)は、Djangoによってあなた(ユーザ)によって渡されたコンテキストにマージされます。

コンテキストプロセッサの使用例は、常にテンプレート内に特定の変数を挿入する場合です(たとえば、ユーザーの場所が候補になる可能性があります)。各ビューに挿入するコードを記述するのではなく、単にコンテキストプロセッサを作成して、それをsettings.pyのTEMPLATE_CONTEXT_PROCESSORS設定に追加するだけです。

希望はこれが理にかなっています。クラスに参加してくれてありがとう!私はあなたがそのようなあなたが求めるものと基本的な概念を説明する優れた[Djangoのチュートリアル](https://docs.djangoproject.com/en/dev/intro/tutorial01/)からスタート示唆

-SID

+0

ありがとうSid!私は本当にあなたの助けとあなたの時間に感謝します!あなたはこれについて私の疑問を明確にしました。自分が持っているアイデアのMVPを作っているので、クラスを取った。だから私はそれを完了し、 "2つのスクランブルのdjango"を読むことを超えていますが、私はまだ理解していない多くの概念があります。以下の答えで、私はこの特定のアプリケーションで何をしようとしているのかを拡張します。 –

1

Contextは、the official documentationで非常によく説明されています。主に間接的に日々の使用では

  1. helper functions

  2. が1を参照してください:あなたはthe low-level api

  3. を使用する場合にのみ、それを必要とするあなたのためのContextを構築するために:要するにいいえ、context processorは、要求を受け取り、RequestContextでレンダリングされるすべてのテンプレートで利用可能な変数の辞書を返します。たとえば、

    def get_stuff_from_session(request): 
        return {'stuff': request.session['stuff']} 
    
8

コンテキスト変数名です - テンプレートに渡されマッピング>変数の値。あなたは、各レンダリング()呼び出しで変数を指定しなくても -

コンテキストプロセッサは、各コンテキスト自動的にセットされます変数の数を指定できます。

関連する問題