【发布时间】:2015-04-27 19:07:38
【问题描述】:
使用 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)
而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
但是,只需在INSTALLED_APPS 中添加django.contrib.staticfiles 就会自动添加静态网址,而且似乎没有办法覆盖它们。从INSTALLED_APPS 中删除django.contrib.staticfiles 可以使这项工作正常进行,但是,如果我这样做,则静态文件模板标签将不再可用。
如何使用 django 开发服务器覆盖为静态文件提供的标头?
【问题讨论】:
-
嗯,我假设你有你的理由,但你不能通过将标题定义为通用模板上的块中的包含,然后在你的实际模板上扩展该模板来实现这一点。
-
不是html文件,是字体文件。
-
哦,好的。好吧,就像我说的,我认为你有你的理由,这就是为什么我没有把它写成答案。
标签: python django django-staticfiles