如何在Django中检查用户是否为匿名用户?

120 投票
8 回答
80076 浏览
提问于 2025-04-16 09:40
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

撰写回答