尝试在 Django 中定义中间件时出现缺少位置参数错误
Getting missing positional argument error when trying to define middleware in Django
我正在尝试在 Django 1.10 项目中开发我自己的第一个中间件。而目前运行进入以下错误
TypeError: init() missing 1 required positional argument:
'get_response'
我在 middleware.py
中定义了这样的中间件:
从 zeon.utils 导入 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',
]
Django 改变了中间件 类 在 1.10 中的工作方式。新型中间件 类 属于 MIDDLEWARE
列表,如下所示:
MIDDLEWARE = [
'zeon.middleware.StartRestEndPointMiddleWare',
]
当您将中间件放入 MIDDLEWARE_CLASSES
时,它被视为旧式中间件,其工作方式不同。更好的错误消息可能会使这一点更清楚。
我正在尝试在 Django 1.10 项目中开发我自己的第一个中间件。而目前运行进入以下错误
TypeError: init() missing 1 required positional argument: 'get_response'
我在 middleware.py
中定义了这样的中间件:
从 zeon.utils 导入 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',
]
Django 改变了中间件 类 在 1.10 中的工作方式。新型中间件 类 属于 MIDDLEWARE
列表,如下所示:
MIDDLEWARE = [
'zeon.middleware.StartRestEndPointMiddleWare',
]
当您将中间件放入 MIDDLEWARE_CLASSES
时,它被视为旧式中间件,其工作方式不同。更好的错误消息可能会使这一点更清楚。