Django,模板上下文处理器

我有一个奇怪的问题,我想使用上下文处理器添加全局查询。这是我通过以下方法做到的:

这样在我的应用中创建了一个processor.py:

from myproject.myapp.models import Foo

def foos(request):

return {'foos': Foo.objects.all()}

并在我的setting.py结尾处添加了以下内容:

TEMPLATE_CONTEXT_PROCESSORS = ('myapp.processor.foos',)

最后,我通过以下观点:

def index_view(request):

return render_to_response('index.html', {}, context_instance=RequestContext(request))

在我的index.html模板上:

<select id="select_foo">

{% for foo in foos %}

<option value="/{{ foo.slug }}">{{ foo.name }}</option>

{% endfor %}

</select>

最后是我的网址:

(r'^$', 'myapp.views.index_view'),

我的foos显示没有问题,但是我的media_url和其他上下文消失了。可能是什么问题

回答:

当你指定时:

TEMPLATE_CONTEXT_PROCESSORS = ('myapp.processor.foos',)

在设置文件中,你将覆盖Django的默认上下文处理器。为了扩展列表,你需要在设置中包括默认值:

TEMPLATE_CONTEXT_PROCESSORS = (

"django.core.context_processors.auth",

"django.core.context_processors.debug",

"django.core.context_processors.i18n",

"django.core.context_processors.media",

"myapp.processor.foos",

)

请注意,以上设置是django 1.1的默认设置(加上你的处理器)。

以上是 Django,模板上下文处理器 的全部内容, 来源链接: utcz.com/qa/410372.html

回到顶部