2015-02-25 38 views
5

Sử dụng máy chủ django dev (1.7.4), tôi muốn thêm một số tiêu đề vào tất cả các tệp tĩnh mà nó phục vụ.máy chủ django dev, thêm tiêu đề vào các tệp tĩnh

Dường như tôi có thể vượt qua một giao diện tùy chỉnh để django.conf.urls.static.static, như vậy:

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 trông như thế này:

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 

Tuy nhiên, chỉ cần có django.contrib.staticfiles trong INSTALLED_APPS thêm các url tĩnh tự động và dường như không có cách nào để ghi đè chúng. Loại bỏ django.contrib.staticfiles từ INSTALLED_APPS làm cho công việc này, tuy nhiên, nếu tôi làm điều đó, templatetags staticfiles không còn có sẵn.

Làm cách nào để ghi đè tiêu đề được phân phát cho tệp tĩnh bằng máy chủ phát triển django?

+0

hmmm, tôi giả sử bạn có lý do của bạn, nhưng bạn có thể không đạt được điều này bằng cách định nghĩa các tiêu đề như một bao gồm trong một khối trên mẫu chung và sau đó mở rộng mẫu đó trên các mẫu thực tế của bạn. –

+0

Nó không dành cho tệp html, nó dành cho tệp phông chữ. – synic

+1

oh, ok. tốt, như tôi đã nói, tôi cho rằng bạn có lý do của bạn đó là lý do tại sao tôi không viết nó như là một câu trả lời. –

Trả lời

3

staticfiles ứng dụng overrides the core runserver lệnh nhưng cho phép bạn vô hiệu hóa phục vụ tự động của các tập tin tĩnh:

python manage.py runserver --nostatic 
Các vấn đề liên quan