私は常に「ユーザー」変数をすべての呼び出しに渡していることに気づきましたrender_to_response
私のレンダリングの多くはこのように見えます
return render_to_response('some/template', {'my':context,'user':user})
メソッドが呼び出されるたびにコンテキストに手動で追加せずに、この「ユーザー」変数を自動的に送信する方法はありますか?
私は常に「ユーザー」変数をすべての呼び出しに渡していることに気づきましたrender_to_response
私のレンダリングの多くはこのように見えます
return render_to_response('some/template', {'my':context,'user':user})
メソッドが呼び出されるたびにコンテキストに手動で追加せずに、この「ユーザー」変数を自動的に送信する方法はありますか?
まず、これを読んでください。それで:
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
はい、コンテキストプロセッサでこれを行うことができます: http://docs.djangoproject.com/en/dev/ref/templates/api/#id1
実際、コンテキスト プロセッサに DJANGO.CORE.CONTEXT_PROCESSORS.AUTH を含めると、すべてのリクエスト オブジェクトにユーザーが追加されます。 http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-auth
context_instance=RequestContext(request)
Context Processor を使用するには、他の人が言及したように使用する必要があります。
render_to
django-annoyingの一部であるを確認することをお勧めします。これにより、次のようなことが可能になります。
@render_to('template.html')
def foo(request):
bar = Bar.object.all()
return {'bar': bar}
# equals to
def foo(request):
bar = Bar.object.all()
return render_to_response('template.html',
{'bar': bar},
context_instance=RequestContext(request))
render_with_user_to
あなたはそれをあなたと一緒に包む同様のデコレータ(例えば)を書くことができます。
Dimitry は正しいですが、direct_to_templateジェネリック ビューを通常の関数として使用することで、これをさらに簡素化できます。そのソースコードはこちらです。
明示的なテンプレート レンダリングを必要とせずに同様のことを行うrender_todjango-annoying
デコレータを提供する素晴らしいアドオン もあります。