2013-01-18 2 views
6

저는 장고 1.4.1 앱을 운영하고 있습니다.django 정적 파일이 미들웨어를 건너 뛸 수 있습니까?

내가 settings.DEBUG은 사실이지만 당신의 설정에서 INSTALLED_APPSdjango.contrib.staticfiles을 포함하는 정적 파일을 제공받을 좋다고 즉 실현하지 않았다, 당신은 수동으로 URL을 파일에 아무것도를 추가 할 필요가 없습니다.

나는 또한 이것이 장고 미들웨어를 우회하는 것으로 나타났습니다. 아무도 어떻게 또는 왜 이런 일이 일어날 지 알고 있습니까?


난 그냥, 내 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 : 내 settings.py를 찾기 위해 디렉토리를 지정한

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

정적 파일이며, 다음과 같이 추가됩니다.

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 

인가? 당신이 django-admin.py runserver 또는 python manage.py runserver을 사용하는 경우

답변

10

난 그냥 다음은 일반 미들웨어 터치 할 수없는 staticfiles 처리기를 추가하는 몇 가지 추가 마법을 수행, ... 게시 한 후

을이 알아 냈어.

당신은 django-admin.py runserver --nostatic을 실행하여이를 비활성화 할 수 있습니다 - 직접 사용) django docs

를 참조하십시오 그리고 당신은 --nostatic을 할 때 같은 당신이 staticfiles_urls를 (포함하는 경우와 같은 응용 프로그램의 URL, 다시 떨어질 것 :

urlpatterns += staticfiles_urlpatterns() 

그러면 미들웨어가 해당 URL (물론 다른 모든 URL)에 대해 실행됩니다.

1

미들웨어로 request.path를 수정하려고 할 때이 문제가 발견되었습니다.

발견 된 URL은 request.path_info이 아닙니다. request.path

관련 문제