2012-03-04 6 views
3

コンテキストプロセッサを使用して、複数の変数をすべてのテンプレートに渡しています。しかし、私はまた、それぞれのテンプレートをレンダリングする実際のビューでこれらの変数を使用したいと思います。それらを要求オブジェクトのセッションオブジェクトまたは要求オブジェクト自体に追加する必要があります(可能な場合)。コンテキスト・プロセッサを使用してビューに変数を渡すにはどうすればよいですか?

答えて

0

コンテキストプロセッサへの参照を取得してビューから呼び出すことはできませんか?私はthe docsで読んだから、コンテキストプロセッサについての特別なことは何もありません:

は、コンテキストプロセッサは、非常にシンプルなインターフェイスを持っている:これは、1つの引数、のHttpRequestオブジェクトを取るだけでPythonの関数だ、となる辞書を返します。テンプレートコンテキストに追加されました。各コンテキストプロセッサは、辞書を返す必要があります。

カスタムコンテキストプロセッサは、コードベースのどこにでも置くことができます。 Djangoが気にするのは、カスタムコンテキストプロセッサがTEMPLATE_CONTEXT_PROCESSORS設定によってポイントされていることです。

あなたはそれをrequestパラメータを渡して、初めに各ビューのアクセス、それらを持っている、または多分(お使いの場合には簡単だ何でも)あなたのためのあなたの意見でそれを「注入」でしょうデコレータを作成することができます。

5

使用RequestContext

def my_view(request): 
    c = RequestContext(request) 
    # c['key'] gets the value for 'key' from your context processor. 
    return render_to_response('template.html', {}, context_instance = c) 
+0

なるほど!はい、それです。気高い! – Hekje

+1

render_to_responseではなくdirect_to_templateを使用できます。それは自動的にRequestContextを呼び出します。 – jobima

関連する問題