尝试在 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 时,它被视为旧式中间件,其工作方式不同。更好的错误消息可能会使这一点更清楚。