2013-01-18 16 views
6

Bir django 1.4.1 uygulamasını çalıştırıyorum.django staticfiles katman yazılımını atlıyor mu?

Ben, settings.DEBUG Doğru iken sadece ayarlarında INSTALLED_APPS içine django.contrib.staticfiles dahil statik dosyalar hizmet almak için yeterli olduğunu, yani fark etmedi, manuel URL'ler dosyaya bir şey eklemek gerekmez.

Ayrıca bunun django ara katman yazılımını atladığını fark ettim. Bunun nasıl ya da neden olduğunu bilen var mı?


Sadece benim views.py boş yeni bir proje oluşturuldu:

from django.http import HttpResponse 
def index(request): 
    html = '<html><body>Logo: <img src="/static/logo.gif"></body></html>' 
    return HttpResponse(html) 

Benim urls.py: My settings.py aramaya bir dizin belirlemişse

from django.conf.urls import patterns, include, url 
urlpatterns = patterns('', 
    url(r'^$', 'testapp.views.index', name='home'), 
) 

statik dosyaları ve ayrıca bu eklenmiştir:

MIDDLEWARE_CLASSES = (
    'testapp.middleware.TestMiddleware', 
    ... 
) 

Bu ortakatmanını kullanarak:

from __future__ import print_function 
class TestMiddleware(object): 
    def process_request(self, request): 
     print("[REQUEST]", request.path) 

Ve ben bir istek yaptığınızda, bu yazdırılır alır: Bu test sunucusu nasıl başlar ile ilgili bir şey

[REQUEST]/
[18/Jan/2013 15:30:27] "GET/HTTP/1.1" 200 60 
[18/Jan/2013 15:30:27] "GET /static/logo.gif HTTP/1.1" 200 2190 
[REQUEST] /favicon.ico 

mi? Eğer django-admin.py runserver veya python manage.py runserver kullanıyorsanız

cevap

10

Sadece o zaman normal katman dokunamazlar bir Statik Dosyalar işleyicisi eklemek için bazı ekstra büyü yapar ... yazdıktan sonra

bu anladım.

Sen django-admin.py runserver --nostatic çalıştırarak bu devre dışı bırakabilirsiniz - doğrudan birlikte) django docs

bkz Ve --nostatic yapınca böyle sen staticfiles_urls (dahil sanki uygulamanızda URL'ler, geri düşecek:

urlpatterns += staticfiles_urlpatterns() 

daha sonra ara yazılımınız bu url'ler (ve tabii ki tüm diğerleri) için çalışacaktır.

1

Bu sorun, middleware ile request.path dosyasını değiştirmeye çalışırken bulundu.

keşfedilen URL'lerin request.path_info değil request.path

karşı çözümlemek
İlgili konular