Using the django dev server (1.7.4), I want to add some headers to all the static files it serves.
It looks like I can pass a custom view to django.conf.urls.static.static
, like so:
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
looks like this:
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
However, simply having django.contrib.staticfiles
in INSTALLED_APPS
adds the static urls automatically, and there doesn't seem to be a way to override them. Removing django.contrib.staticfiles
from INSTALLED_APPS
makes this work, however, if I do that, the staticfiles templatetags are no longer available.
How can I override the headers that are served for static files using the django development server?
staticfiles
app overrides the core runserver
command but allows you to disable the automatic serving of the static files:
python manage.py runserver --nostatic