django根据请求向所有视图添加上下文

Moh*_*yki 5 django

如果请求中有一个参数,如nv = false,我需要在没有导航栏的情况下渲染我的网站,并且我想基于此将变量传递给上下文,以便主模板显示块或不显示.我的网站也有很多json-rpc函数,我不想在它上面增加额外的开销.如何在不重写所有观点的情况下完成此操作?(它们不是基于类的,我的网站使用django 1.8)

小智 12

只需添加将此变量添加到上下文的上下文处理器.上下文处理器是一个简单的python函数

def navbar(request):
    return {'navbar_enabled': request.GET.get('nv', False)
Run Code Online (Sandbox Code Playgroud)

并将其添加到模板上下文处理器列表中

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'MODULE_NAME.navbar',
    ...
)
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用新的`TEMPLATES`设置在Django 1.8+中,在`TEMPLATES`设置中设置`context_processors`选项,而不是`TEMPLATE_CONTEXT_PROCESSORS`. (3认同)