2012-04-20 4 views
4

Я использую стандартный стандарт Django./login, имеющий следующий loc в моем /urls.py.Django - Аутентификация - перенаправление

(r'^$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }), 

Войти работает нормально, если пользователь вызывает www.myapp.com и Логин перенаправляет LOGIN_REDIRECT_URL = «/ ч/ро/мой /» (www.myapp.com/pm/po/my/), определенный в settings.py.

Сессия не убита (= пользователь не вышел из системы), если пользователь закрывает вкладку браузера, оставляя открытым браузер. Что тоже прекрасно.

Однако, если пользователь откроет новую вкладку и перейдет на сайт www.myapp.com, вид входа снова отображается, а пользователь уже вошел в систему. Здесь я хочу, чтобы пользователь перенаправлялся на сайт www.myapp.com/ pm/po/my /.

Как я могу это достичь?

Я пробовал, добавив следующую строку:

(r'^$', 'myapp.project_management.views.projects'), 
(r'^$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }), 

Однако это приводит к следующему сообщению об ошибке: "Этот сайт имеет петлю перенаправлять"

--Solution--

URLs .py:

(r'^$', 'myapp.project_management.views.my_projects'), 
(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }), 

settings.py

LOGIN_URL = '/login' 

ответ

4

Не указывайте домашний URL-адрес на странице входа. Вместо этого используйте login_required decorator для перенаправления нерегистрируемых пользователей на страницу входа по мере необходимости.

+0

Спасибо. Простое и аккуратное решение. Добавил код в свой пост. –

0

Внесите свой собственный вид для URL-адреса для входа и сделайте перенаправление, если ваш логин (обычно с request.method = 'POST), или этот пользователь уже имеет авторизованный.

Смежные вопросы