如何使用上下文处理器将变量传递给视图?

时间:2012-03-04 11:03:01

标签: django django-views

我正在使用上下文处理器将几个变量传递给我的所有模板。但是,我还想在渲染相应模板的实际视图中使用这些变量。我应该将它们添加到请求对象的会话对象还是请求对象本身(如果可能的话)?

2 个答案:

答案 0 :(得分:5)

使用RequestContext

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参数,或者创建一个装饰器,在你的视图中“注入”它(在你的情况下更容易)。