Django request.user.is_authenticated始终为true?

2024-05-18 08:45:22 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能告诉我为什么在下面的代码中我被重定向到yahoo.com而不是google.com吗?

网址

urlpatterns = patterns('', (r'^$', initialRequest,))

查看

def initialRequest(request):

    if request.user.is_authenticated:
        return HttpResponseRedirect('http://yahoo.com')
    else:
        return HttpResponseRedirect('http://google.com')

Tags: 代码comhttpreturnifrequestdefgoogle
3条回答

它再次从Pull请求#216更改。

现在您的问题已经解决了,如果您使用的是Django 2.0+,请看这个GitHub issue与您遇到的问题相同。所以在Django 2.0+

request.user.is_authenticated

是真的!

正如Richard提到的那样,authenticated是一个函数,因此在您看来应该像这样调用它:request.user.is_authenticated()

由于django模板语言的存在,可能会出现混淆,因为在模板中调用它会使其显示为属性而不是方法。

{{ user.is_authenticated}}https://docs.djangoproject.com/en/dev/topics/auth/

它不应该是request.user.is_authenticated(),也就是说,有括号作为函数吗?

对于Django 1.10+

is_authenticated现在是一个属性(尽管它现在保持向后兼容)。

相关问题 更多 >