如何检查此用户是匿名用户还是系统上的用户?

时间:2011-01-09 23:40:36

标签: python django http authentication

def index(request):
    the_user = request.user

在Django中,我如何知道它是否是真正的用户?我试过了:

if the_user:但是即使没有人登录也会出现“AnonymousUser”。因此,它总是返回true,但这不起作用。

5 个答案:

答案 0 :(得分:94)

您可以查看request.user.is_anonymous是否返回True

答案 1 :(得分:13)

的替代方案
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

答案 2 :(得分:4)

我知道我在这里做了一些严肃的挖掘,但谷歌搜索带我到这个页面。

如果你的视图def要求用户登录,你可以实现@login_required装饰器:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    …

答案 3 :(得分:0)

我有一个类似的问题,除了这是将login_redirect_url发送到的页面上。我必须放入模板:

{% if user.is_authenticated %}
    Welcome Back, {{ username }}
{% endif %}

答案 4 :(得分:0)

您应该检查 request.user.is_authenticated 的值。它将为 True 实例返回 User,为 False 实例返回 AnonymousUser

One answer 建议使用 is_anonymous,但 django.contrib.auth documentation 表示“您应该更喜欢使用 is_authenticated 而不是 is_anonymous”。