2013-06-23 3 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, указанный в моем файле настроек, и т.д., но ни один из них не кажется, делать что-либо. Я думаю, что все из-за пустой action = "", но я не думаю, что это причина.

+0

Вы, вероятно, проигравшей контекст becasuse из '' 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 в моих настройках, а также разместил url для django.contrib.auth.views.login в моем urls.py, но он все еще просто не делает ничего к сожалению. Там по-прежнему нет перенаправления, и он просто обновляет страницу (и теперь выходит из системы). – Stylex

+0

Почему бы вам не попробовать опубликовать весь ваш просмотр/URL/шаблон и т. Д.? Таким образом, мы можем видеть всю картину. – Ben