2013-06-23 40 views
0

所以我想考虑登录用户说有2个选项卡打开,并在一个选项卡中但在另一个选项卡中登出我的网站的情况标签,因为他们仍然'登录',并且他们尝试点击提交POST数据的按钮,我的视图中的函数应该检测到用户未通过身份验证,并且应该将其重定向到登录页面。但是,我似乎无法得到这个工作。我做了很多测试,我知道我的状况正确地得到验证,但是重定向并没有发生。以下是我认为的表单和代码的代码。Django - 在POST后重定向(但在注销后)

<form method="POST" action=""> 
{% csrf_token %} 
# an input button 
</form> 


if not request.user.is_authenticated(): 
    return HttpResponseRedirect(reverse('django.contrib.auth.views.login')) 

#otherwise I check if it was request.POST etc and handle a normal request 

我试着硬编码的URL,使用我的设置文件中指定的登录URL等,但似乎没有任何它似乎做任何事情。我想这都是因为空行动“”的一部分,但我不认为这是原因。

+0

你可能会失去方面具有因的'HttpResponseRedirect'使用'redirect_to'代替 – karthikr

回答

2

我看来,像为login_required装饰完美的任务:https://docs.djangoproject.com/en/1.5/topics/auth/default/#the-login-required-decorator

+0

+1的片段测试'user.request.is_authenticated()'看起来是正确的,并应该工作,但使用'login_required'装饰器会更简单。 – Alasdair

+0

我已经尝试了@login_required(并重新尝试一次,现在只是为了确保),并在我的设置中指定了LOGIN_URL,并且在我的urls.py中放入了django.contrib.auth.views.login的url,但它仍然只是不幸的是没有做任何事情。仍然没有重定向,它只是刷新页面(现在正在注销) – Stylex

+0

为什么你不试试发布你的整个视图/网址/模板等?所以我们可以看到整个画面。 – Ben