如何在Django中检查用户是否为匿名用户?
def index(request):
the_user = request.user
在Django中,我怎么知道用户是真实的还是虚假的呢?我试过这样写:
if the_user:
但是即使没有人登录,"AnonymousUser" 这个用户也会出现。所以,这个判断总是返回真,这样就不管用了。
8 个回答
11
你应该检查一下 request.user.is_authenticated
的值。这个值会返回 True
,如果是一个 User
实例;如果是一个 AnonymousUser
实例,它会返回 False
。
有一个回答提到可以使用 is_anonymous
,但是 django.contrib.auth 的文档说“你应该优先使用 is_authenticated
而不是 is_anonymous
”。
20
一种替代方法是
if user.is_anonymous():
# user is anon user
可以通过测试来查看用户对象的ID是什么:
if user.id == None:
# user is anon user
else:
# user is a real user
详情请见 https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users
214
你可以检查一下 request.user.is_anonymous
这个值是否返回 True
。