django request.user.is_authenticated总是如此?

时间:2012-02-16 18:12:42

标签: python django

有谁可以告诉我为什么在以下代码中我被重定向到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')

4 个答案:

答案 0 :(得分:39)

不应该是request.user.is_authenticated(),即括号,因为它是一个函数吗?

对于Django 1.10 +

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

答案 1 :(得分:10)

正如Richard所提到的,is_authenticated是一个函数,所以在你的视图中它应该被称为:request.user.is_authenticated()

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

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

答案 2 :(得分:3)

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

现在你的问题已得到解决,如果你使用的是Django 2.0+,看看这个GitHub issue就是你遇到的问题。所以在Django 2.0 +

request.user.is_authenticated

是真的!

答案 3 :(得分:0)

我是django 2.0,我试过这个并且工作

if request.user.is_authenticated: