与公开的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添加到默认上下文?提前谢谢。
答案 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
。