我试图在Django 1.10项目中提出我自己的第一个中间件。并且目前遇到以下错误
TypeError: init ()缺少1个必需的位置参数: 'get_response'
我已经在middleware.py
中定义了这样的中间件:
导入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
我想弄清楚什么是错的,因为一切似乎都与doc一致。我真的很感激任何提示。
更新: 我将它放入middle_classes:
MIDDLEWARE_CLASSES = [
'zeon.middleware.StartRestEndPointMiddleWare',
]
答案 0 :(得分:2)
Django改变了中间件类在1.10中的工作方式。新式中间件类属于MIDDLEWARE
列表,如下所示:
MIDDLEWARE = [
'zeon.middleware.StartRestEndPointMiddleWare',
]
当您将中间件放入MIDDLEWARE_CLASSES
时,它被视为旧式中间件,其工作方式不同。更好的错误消息可能会使这更清楚。