我有以下中间件:
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。
答案 0 :(得分:3)
如果您想访问该用户,您的中间件应该在'django.contrib.auth.middleware.AuthenticationMiddleware'
之后。您无需使用getattr
,只需request.user
即可。根据您是否登录,它将是登录用户或AnonymousUser
。