2017-05-14 1 views
1

Django 1.10 프로젝트에서 내 자신의 첫 미들웨어를 생각해 내려고합니다. zeon.utils에서Django에서 미들웨어를 정의하려고 할 때 위치 인수 오류가 누락되었습니다.

내가 무엇을 알아 내려고 노력 분실하고 RequestLogThread

class StartRestEndPointMiddleWare(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. 
     request.request_log_id = RequestLogThread('send_contact', request.data).start() 

     response = self.get_response(request) 

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

     return response 

가져 : 그리고 현재 나는이 같은 middleware.py에 미들웨어를 정의

TypeError: init() missing 1 required positional argument: 'get_response'

다음 오류로 실행 모두가 doc에 따르는 것처럼 보이기 때문에 잘못되었습니다. 나는 정말로 어떤 힌트도 주셔서 감사합니다.

UPDATE : 나는 middle_classes에 배치 :

MIDDLEWARE_CLASSES = [ 
    'zeon.middleware.StartRestEndPointMiddleWare', 
] 
+0

'MIDDLEWARE' 사전이나'MIDDLEWARE_CLASSES' 사전에 넣으시겠습니까? – Blender

+0

질문 : –

답변

2

장고 미들웨어 클래스가 1.10에서 근무 방식을 변경했습니다. 새로운 스타일의 미들웨어 클래스는이처럼 MIDDLEWARE 목록에 속하지 :

MIDDLEWARE = [ 
    'zeon.middleware.StartRestEndPointMiddleWare', 
] 

당신이 MIDDLEWARE_CLASSES에 미들웨어를 넣어

, 그것은 다르게 작동 옛날 스타일의 미들웨어로 치료를 받고 있어요. 더 나은 오류 메시지가 더 명확하게 나타 났을 수 있습니다.

+0

에 따라 질문을 업데이트했으며 나머지 미들웨어는 어떻게 되나요? 나는 그것들을'MIDDLEWARE_CLASSES'에 남겨두고 사용자 정의 미들웨어만을 MIDDLEWARES로 옮겨야합니까? 아니면 모든 것을 '미들'로 옮겨야합니까? –

+0

'MIDDLEWAREES'가 아닌 'MIDDLEWARE'이어야합니다. –

+0

@EdgarNavasardyan : 고마워요. 모든 내장 미들웨어는이 두 가지를 모두 지원하므로, 모든 것을 '미들웨어'로 옮길 수 있습니다. 'MIDDLEWARE'와'MIDDLEWARE_CLASSES'를 동시에 가질 수는 없습니다. – Blender

관련 문제