2009-05-06 8 views

答えて

22

、それ実行する追加のプロセッサのリストも取得します。任意の汎用コンテキストプロセッサをsettings.pyに入れることができ、より具体的なものをケースごとにRequestContextに追加することができます。

RequestContextを実行してコンテキストプロセッサを実行しないでください。

# want context processors listed in settings.py as well as some more specific ones 
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request, processors = extra_processors)) 

# want only context processors listed in settings.py 
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request)) 

# no context processors 
return render_to_response('template.html', {'foo':'bar'}) 
+0

これは私にとってより良い答えのようです – Rasiel

+0

本当に余分なプロセッサビットがあったので、私はそれを切り替えました。 – rennat

1

あなたは例えば、実際にはそれだけを必要とするものにRequestContext(request)を渡すことによって、コンテキストプロセッサを使用したビューフィルタアウトすることができます:RequestContext初期化子は、設定ファイルに記載されている任意のコンテキストプロセッサを実行します

# want context processors 
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request)) 

# no context processors 
return render_to_response('template.html', {'foo':'bar'}) 
+0

私は、この特定の状況のた​​めに働くだろうと思うが、ここでは大きな考えるしようとしている:私はその時点で、ランダムにビューによって必要とされた3つのまたは4コンテキストプロセッサ機能を持っていた場合、私はちょうどそれらをインポートすべきかとそれらを必要とするビューで呼び出すことができますか?コンテキストプロセッサは、まったく、まったく同じものなのですから。 – rennat

+3

右、settings.pyのコンテキストプロセッサは、RequestContextのすべてまたはなしです。より柔軟な方法は、あなたが望むプロセッサのセットごとにRequestContextをサブクラス化してそこにコンテキストプロセッサを設定することです。サイドバーコンテキストとコメントコンテキストを持たせることができます。これはコンテキストプロセッサをsettings.pyから取得しますそれらのアプリをより具体的にすることができます。これは、コンテキストプロセッサを使用するアプリがたくさんある場合に適しています。それでは、チェーンを張る良い方法が必要なだけです... – tghw

関連する問題