Djangoコンテキストプロセッサを使用するのが適切な場合
-
06-07-2019 - |
質問
ビューの約半分が同じデータセットを必要とする場合、コンテキストプロセッサを使用してデータを常に利用可能にするのが適切ですか、またはクエリを実行せずに複数のビューにわたってそのデータを取得するコードを繰り返すことを回避するより良い方法がありますデータがビューで使用されない場合はどうなりますか?
解決
RequestContext
イニシャライザは、設定ファイルにリストされているコンテキストプロセッサを実行しますが、実行する追加のプロセッサのリストも取得します。任意の汎用コンテキストプロセッサを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'})
他のヒント
RequestContext(request)
を必要とするビューのみに渡すことで、実際にコンテキストプロセッサを使用するビューを除外できます。例:
# 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'})
所属していません StackOverflow