2017-05-17 5 views
0

내 프로젝트/app/middleware.py 파일에 LoggedInUserMiddleware를 만들고 프로젝트/master/settings.py의 MIDDLEWARE 부분에 마지막 항목으로 추가했습니다. 파일. settings.py에 추가하기 전에 앱이 정상적으로 응답합니다. settings.py에 추가 한 후 내 앱의 URL에서 ERR_EMPTY_RESPONSE를받습니다.Django app settings.py에 사용자 정의 미들웨어를 추가 할 때

My LoggedInUserMiddleware는 현재 문제를 일으키지 않으려 고 시도하는 것처럼 보입니다.

class LoggedInUserMiddleware(object): 
    def process_request(self, request): 
     return None 

제가 알기로 미들웨어는 모든 새로운 하나의 새로운 HTML 요청과 함께 실행되어야하지만 절대적으로 아무것도하지 않아야합니다.

+0

을 제쳐두고 ,'LoggedInUserMiddleware'가 당신에게 원하는 것은 무엇입니까? 내장 된 인증 미들웨어의 기능을 복제하지 않았는지 확인하십시오! – Alasdair

+0

익명 사용자가 내 URL을 요청하면 미들웨어가 로그인 URL로 리디렉션하도록합니다. 나는 단지 내가 https://docs.djangoproject.com/es/1.9/topics/http/middleware/에 따라 갔다는 링크가 당신이 말했던 것처럼 오래된 것임을 깨달았다. –

답변

0

old-style middleware (Django < 1.10)을 작성했습니다. MIDDLEWARE_CLASSES 대신 MIDDLEWARE 설정을 사용하는 경우 new-style middleware으로 작성해야합니다.

하나의 옵션은 MiddlewareMixin을 사용하는 것입니다.

from django.utils.deprecation import MiddlewareMixin 

class LoggedInUserMiddleware(MiddlewareMixin): 
    def process_request(self, request): 
     return None 

그러나 당신이 이전 MIDDLEWARE_CLASSES 설정을 지원하기 위해 필요하지 않은 경우, 믹스 인을 사용할 필요가없고, 나는 문서의 예제에서 시작할 것 :

class LoggedInUserMiddleware(object): 
    def __init__(self, get_response): 
     self.get_response = get_response 
     # One-time configuration and initialization. 

    def __call__(self, request): 
     # Code to be executed for each request before 
     # the view (and later middleware) are called. 

     response = self.get_response(request) 

     # Code to be executed for each request/response after 
     # the view is called. 

     return response 
+0

대성공. 감사합니다. –