Django:在上下文中自动导入MEDIA_URL

时间:2010-05-21 09:00:40

标签: python django

与公开的here一样,可以在settings.py中设置MEDIA_URL(例如我指向Amazon S3)并通过{{ MEDIA_URL }}在视图中提供文件。由于MEDIA_URL不是自动在上下文中,因此必须手动将其添加到上下文中,因此,例如,以下工作:

#views.py

from django.shortcuts import render_to_response
from django.template import RequestContext

def test(request):
    return render_to_response('test.html', {}, context_instance=RequestContext(request))

这意味着在每个view.py文件中我必须添加from django.template import RequestContext,并且在每个响应中我必须明确指定context_instance=RequestContext(request)

有没有办法自动(DRY)将MEDIA_URL添加到默认上下文?提前谢谢。

2 个答案:

答案 0 :(得分:3)

这种用法有一个通用的观点:

direct_to_template(request, template, extra_context=None, mimetype=None, **kwargs)

没有详细记录(在我看来:它并不表示它使用RequestContext),所以我建议你查看实现:

http://code.djangoproject.com/browser/django/trunk/django/views/generic/simple.py

我认为这正是你要找的......

答案 1 :(得分:0)

"django.core.context_processors.media"添加到设置文件中的TEMPLATE_CONTEXT_PROCESSORS