使用 django 开发服务器(1.7.4),我想向它提供的所有静态文件添加一些标头。
看起来我可以将自定义视图传递给django.conf.urls.static.static
,像这样:
if settings.DEBUG:
from django.conf.urls.static import static
from common.views.static import serve
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT, view=serve)
And common.views.static.serve
看起来像这样:
from django.views.static import serve as static_serve
def serve(request, path, document_root=None, show_indexes=False):
"""
An override to `django.views.static.serve` that will allow us to add our
own headers for development.
Like `django.views.static.serve`, this should only ever be used in
development, and never in production.
"""
response = static_serve(request, path, document_root=document_root,
show_indexes=show_indexes)
response['Access-Control-Allow-Origin'] = '*'
return response
然而,只要有django.contrib.staticfiles
in INSTALLED_APPS
自动添加静态网址,并且似乎没有办法覆盖它们。去除django.contrib.staticfiles
from INSTALLED_APPS
使这项工作有效,但是,如果我这样做,静态文件模板标签将不再可用。
如何使用 django 开发服务器覆盖为静态文件提供的标头?