将自定义中间件添加到settings.py时,Django app ERR_EMPTY_RESPONSE

时间:2017-05-17 15:22:19

标签: python django middleware

我在project / app / middleware.py文件中创建了一个LoggedInUserMiddleware,并将其添加为我的project / master / settings.py文件的MIDDLEWARE部分中的最后一个条目。在将它添加到settings.py之前,应用程序响应正常。将它添加到settings.py后,我从我的应用程序的任何URL获取ERR_EMPTY_RESPONSE。

我的LoggedInUserMiddleware目前看起来像是为了试图让它不会崩溃。

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

据我了解,该中间件应该在每个新的html请求中执行,但绝对不执行任何操作。

1 个答案:

答案 0 :(得分:0)

你写了old-style middleware(Django< 1.10)。如果您使用MIDDLEWARE设置而不是MIDDLEWARE_CLASSES,那么您应该写一个new-style middleware

一种选择是使用MiddlewareMixin

from django.utils.deprecation import MiddlewareMixin

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

但是,如果您不需要支持旧的MIDDLEWARE_CLASSES设置,则无需使用mixin,我将从文档中的示例开始:

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