为什么不是适用于所有请求此Django模板背景下的处理器?

我在下面的内容Django模板背景下处理器运行的问题。

上下文处理器中定义myapp/context_processors.py

def my_context_processor(request): return { 'foo': 123, }

它在settings.py与标准Django的背景下沿处理器接线:

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

我遇到的问题是,my_context_processor不施加于所有请求。

适用于下面的代码:

def index(request): return render_to_response("index.html", locals())

然而 ,它被应用于以下代码:

def index(request): return render_to_response("index.html", locals(), context_instance=RequestContext(request))

我的印象是这方面处理器适用于所有请求,不只是当context_instance提供。

我如何被应用于所有请求我的上下文处理器?

--------------解决方案-------------

你已经回答了你自己的问题。 它适用于使用的反应RequestContext 。 它不应用于不感兴趣。

该方式得到它被应用到所有答复是确保你总是使用RequestContext的。 或者,在Django 1.3+,您可以使用新的render快捷方式,而不是render_to_response ,这会创建一个RequestContext的。

Django的推出了全新的render在Django 1.3快捷方式自动包含RequestContext

from django.shortcuts import render

def my_view(request):
# View code here...
context = {
'some_extra_var_for_template': 'value'
}
return render(request, 'myapp/index.html', context)

您可以在Django文档阅读它。

发送时上下文处理器变量仅可用RequestContext对象(与当前请求初始化)到模板作为context_instance

分类:Django的 时间:2015-03-15 人气:3
本文关键词: Django的,Django模板
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.334 (s). 10 q(s)