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

Hek*_*kje 3 django django-views

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

Gar*_*ees 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)
Run Code Online (Sandbox Code Playgroud)


mgi*_*nbr 0

难道你不能只获取上下文处理器的引用并在你的视图中调用它吗?从我在文档中读到的内容来看,上下文处理器没有什么特别的:

上下文处理器有一个非常简单的接口:它只是一个 Python 函数,它接受一个参数(一个 HttpRequest 对象),并返回一个添加到模板上下文中的字典。每个上下文处理器必须返回一个字典。

自定义上下文处理器可以存在于代码库中的任何位置。Django 关心的只是您的自定义上下文处理器由您的 TEMPLATE_CONTEXT_PROCESSORS 设置指向。

您可以让每个视图在一开始就访问它们,向其传递request参数,或者创建一个装饰器,将其“注入”到您的视图中(无论您的情况如何更容易)。