Django render\u to\u响应始终传递一个变量

Django render\u to\u响应始终传递一个变量,django,django-context,Django,Django Context,我发现自己总是在每次调用render\u to\u response 我的很多渲染都是这样的 return render_to_response('some/template', {'my':context,'user':user}) 是否有一种方法可以自动发送此“用户”变量,而无需在每次调用方法时手动将其添加到上下文中?首先,请阅读。然后: 您可能想看看,这是django烦人的一部分,它允许您执行以下操作: @render_to('template.html') def foo(reques

我发现自己总是在每次调用
render\u to\u response

我的很多渲染都是这样的

return render_to_response('some/template', {'my':context,'user':user})
是否有一种方法可以自动发送此“用户”变量,而无需在每次调用方法时手动将其添加到上下文中?

首先,请阅读。然后:

您可能想看看,这是django烦人的一部分,它允许您执行以下操作:

@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\u with\u user\u to
)来包装它。

Dimitry是正确的,但是您可以通过使用通用视图作为常规函数来进一步简化它。它的源代码是


还有一个很好的附加组件,
django Hasting
,它为装饰者提供了类似的功能,但不需要显式的模板呈现。

是的,您可以使用上下文处理器来实现这一点:

事实上,如果在上下文处理器中包括DJANGO.CORE.CONTEXT_PROCESSORS.AUTH,那么用户将添加到每个请求对象中。

您将需要使用
context\u instance=RequestContext(request)
,正如其他人提到的那样使用上下文处理器

@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))