如何从Django中间件获取用户对象?

时间:2017-04-26 14:59:22

标签: python django

我有以下中间件:

class TestMiddleware():
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        print(getattr(request, "user", None))
        return self.get_response(request)

print函数始终打印None。我在settings.py中的django.contrib.auth.middleware.AuthenticationMiddleware行之前和之后都添加了中间件,但在任何一种情况下,我都会得到None。此外,我以用户身份登录。

我还能尝试什么?我正在使用Django 1.11。

1 个答案:

答案 0 :(得分:3)

如果您想访问该用户,您的中间件应该在'django.contrib.auth.middleware.AuthenticationMiddleware'之后。您无需使用getattr,只需request.user即可。根据您是否登录,它将是登录用户或AnonymousUser