我有一个奇怪的问题,我想使用上下文处理器添加一个全局查询。 这是我做到了由following: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在我的settings.py,使用默认的Django 1.1.1和MEDIA_URL被罚款早期工作。 – Hellnar 2010-02-11 18:37:02
这是因为如果你没有指定它,它会使用djangos设置中指定的默认值。这就是所有django设置的工作原理,它们有一个默认值,如果你没有在'settings.py'中设置它,就会使用它。 – 2010-02-11 18:37:55
感谢您的工作!所以我删除“django.contrib.messages.context_processors.messages”我得到的错误, 我认为这是Django的开发版本,而不是1.1.1 – Hellnar 2010-02-11 18:41:02