为什么上下文处理器会添加到django中的每个视图?

时间:2013-08-20 16:38:20

标签: django django-templates django-views django-context

我创建了一个上下文处理器,以便将变量传递给我的所有模板。

我的settings.py看起来像这样:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'myapp.context_processors.setting_processor',
)

我在一个视图中传递:

request_context = RequestContext(request,
            processors=[setting_processor])

    return render(request, 'settings.html', context, context_instance=request_context)

我也是,放入我的处理器,它会触发我网站的每个视图。我认为只有当我从视图中传入请求上下文时它才被击中?

以下是我转到的每个视图中打印的代码:

def setting_processor(request):
    print '--------------- in content processor'

如何使它仅在某些视图中触发上下文处理器?

1 个答案:

答案 0 :(得分:1)

将处理器添加到设置时,会在每个视图中传递处理器。

如果您只想在一个视图中删除设置并使用我上面的内容:

request_context = RequestContext(request,
            processors=[setting_processor])

    return render(request, 'settings.html', context, context_instance=request_context)