当我没有登录时,我正在努力is_authenticated
返回True
:
u = request.user
if u.is_authenticated:
raise Exception('I am said to be authenticated, but I really am not.')
为了澄清,Django调试视图正确地将u
标识为AnonymousUser
:
u <django.contrib.auth.models.AnonymousUser object at 0x9e76f4cc>
更奇怪的是,模板内的 is_anonymous
效果很好:
{% if not request.user.is_authenticated %}
We are anonymous.
{% endif %}
为什么?
答案 0 :(得分:26)
答案 1 :(得分:6)
is_authenticated
是一种方法,所以你需要一些括号。否则,u.is_authenticated
是函数对象,它是True
ish值。
在模板语言中,没有参数的函数被评估为函数,这就是为什么你在那里很好。