2013-01-18 20 views
6

मैं एक django 1.4.1 ऐप चला रहा हूँ।क्या django staticfiles मिडलवेयर छोड़ देता है?

मुझे नहीं पता था कि सिर्फ अपनी सेटिंग्स में INSTALLED_APPS में django.contrib.staticfiles सहित स्टैटिक फ़ाइलें में सेवा करने के लिए पर्याप्त है, जबकि settings.DEBUG सच है, जैसे कि, आपको अपने URL मैन्युअल फाइल करने के लिए कुछ भी जोड़ने की जरूरत नहीं है।

मैंने यह भी देखा कि यह django midware को छोड़ देता है। क्या कोई जानता है कि यह कैसे होता है या क्यों?


मैं सिर्फ एक खाली नई परियोजना मेरी views.py बनाया,:

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

मेरे urls.py:

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

मेरे settings.py देखने के लिए एक निर्देशिका निर्दिष्ट किया है स्थैतिक फाइलें, और इसमें यह भी जोड़ा गया है:

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

इस मिडलवेयर का उपयोग करना:

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

और जब मैं एक अनुरोध करते हैं, यह बाहर प्रिंट हो:

[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 

यह कैसे परीक्षण सर्वर शुरू होता है के साथ क्या करने के लिए कुछ है?

उत्तर

10

मैं सिर्फ यह पता लगा पोस्टिंग के बाद ...

आप django-admin.py runserver या python manage.py runserver का उपयोग कर रहे हैं, तो यह कुछ अतिरिक्त जादू एक StaticFiles हैंडलर कि अपने नियमित रूप से मिडलवेयर स्पर्श नहीं कर सकते हैं जोड़ने के लिए करता है।

आप django-admin.py runserver --nostatic चलाकर इस निष्क्रिय कर सकते हैं - देख django docs

और जब आप --nostatic कर यह इस तरह यदि आप staticfiles_urls (शामिल रूप में अपने अनुप्रयोग में यूआरएल, करना प्रारंभ कर देगा) के साथ सीधे:

urlpatterns += staticfiles_urlpatterns() 

तो आपका मिडलवेयर उन यूआरएल (और निश्चित रूप से आपके सभी अन्य) के लिए चलाएगा।

1

मिडलवेयर के साथ request.path को संशोधित करने का प्रयास करते समय यह समस्या मिली।

request.path_inforequest.path

के विरुद्ध यूआरएल को हल किया गया
संबंधित मुद्दे