def index(request):
the_user = request.user
在Django中,我如何知道它是否是真正的用户?我试过了:
if the_user:
但是即使没有人登录也会出现“AnonymousUser”。因此,它总是返回true,但这不起作用。
答案 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
”。