【问题标题】:why is context processor adding to every view in django?为什么上下文处理器会添加到 django 中的每个视图中?
【发布时间】:2013-08-20 16:38:19
【问题描述】:

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

我的 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'

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

【问题讨论】:

  • 不使用 context_processor?

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2011-10-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多