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