我正在使用上下文处理器将几个变量传递给我的所有模板。但是,我还想在渲染相应模板的实际视图中使用这些变量。我应该将它们添加到请求对象的会话对象还是请求对象本身(如果可能的话)?
答案 0 :(得分:5)
def my_view(request):
c = RequestContext(request)
# c['key'] gets the value for 'key' from your context processor.
return render_to_response('template.html', {}, context_instance = c)
答案 1 :(得分:0)
您是否只能获得对上下文处理器的引用并在您的视图中调用它?从我在the docs中读到的内容来看,上下文处理器并没有什么特别之处:
上下文处理器有一个非常简单的接口:它只是一个Python函数,它接受一个参数,一个HttpRequest对象,并返回一个被添加到模板上下文的字典。每个上下文处理器都必须返回一个字典。
自定义上下文处理器可以存在于代码库中的任何位置。所有Django都关心的是您的自定义上下文处理器是由您的TEMPLATE_CONTEXT_PROCESSORS设置指向的。
你可以让每个视图在开始时访问它们,传递request
参数,或者创建一个装饰器,在你的视图中“注入”它(在你的情况下更容易)。