2

私は常に「ユーザー」変数をすべての呼び出しに渡していることに気づきましたrender_to_response

私のレンダリングの多くはこのように見えます

return render_to_response('some/template', {'my':context,'user':user})

メソッドが呼び出されるたびにコンテキストに手動で追加せずに、この「ユーザー」変数を自動的に送信する方法はありますか?

4

4 に答える 4

11

まず、これを読んでください。それで:

def some_view(request):
    # ...
    return render_to_response('my_template.html',
                          my_data_dictionary,
                          context_instance=RequestContext(request))
于 2010-02-11T12:58:43.807 に答える
2

はい、コンテキストプロセッサでこれを行うことができます: 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 を使用するには、他の人が言及したように使用する必要があります。

于 2010-02-11T13:17:01.920 に答える
0

render_todjango-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あなたはそれをあなたと一緒に包む同様のデコレータ(例えば)を書くことができます。

于 2010-02-11T13:04:23.690 に答える
0

Dimitry は正しいですが、direct_to_templateジェネリック ビューを通常の関数として使用することで、これをさらに簡素化できます。そのソースコードはこちらです。

明示的なテンプレート レンダリングを必要とせずに同様のことを行うrender_todjango-annoyingデコレータを提供する素晴らしいアドオン もあります。

于 2010-02-11T13:14:01.607 に答える