有谁可以告诉我为什么在以下代码中我被重定向到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')
答案 0 :(得分:39)
不应该是request.user.is_authenticated()
,即括号,因为它是一个函数吗?
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: