2015-02-25 11 views
5

Utilizzando il server dev django (1.7.4), voglio aggiungere alcune intestazioni a tutti i file statici che serve.django dev server, aggiunta di intestazioni a file statici

sembra che io posso passare una visualizzazione personalizzata per django.conf.urls.static.static, in questo modo:

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) 

E common.views.static.serve assomiglia a questo:

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 

Tuttavia, il fatto di avere django.contrib.staticfiles in INSTALLED_APPS aggiunge gli URL statici automaticamente, e non sembra essere un modo per ignorarli. La rimozione di django.contrib.staticfiles da INSTALLED_APPS rende questo lavoro, tuttavia, se lo faccio, i file statici non sono più disponibili.

Come è possibile sovrascrivere le intestazioni fornite per file statici utilizzando il server di sviluppo django?

+0

hmmm, presumo hai le tue ragioni, ma non si poteva ottenere questo definendo le intestazioni come includere all'interno un blocco su un modello generico e quindi estendere tale modello sui modelli reali. –

+0

Non è per i file html, è per i file dei font. – synic

+1

oh, ok. beh, come ho detto, ho pensato che tu avessi le tue ragioni e questo è il motivo per cui non l'ho scritto come risposta. –

risposta