如何使“ request.user.is_authenticated”工作而不会引发错误

时间:2019-05-04 23:36:33

标签: django

我尝试使用用户身份验证,但是每次使用身份验证时,我都会得到一个类型错误,告诉我'bool'对象不可调用。 我无法克服它。

 if request.user.is_authenticated():
        print(user)
    else:
        return redirect("/login")
    return render(request, 'home.html', context)

2 个答案:

答案 0 :(得分:2)

在较新版本的Django中,is_authenticated成为 属性 ,而不是 功能

所以请使用 request.user.is_authenticated (不带括号“()”)

#Code snippet
if request.user.is_authenticated: # change is here <<<<<<<
        print(user)
    else:
        return redirect("/login")
    return render(request, 'h/code>

答案 1 :(得分:0)

当您收到错误消息x is not callable时,通常是因为您试图调用不是函数的东西。例如,

myVar = True
myVar()

将返回与上面相同的错误。

在您的情况下,由于request.user.is_authenticated()是布尔值而不是函数,因此request.user.is_authenticated需要替换为request.user.is_authenticated(减去括号)。

干杯!