Я знаю о LOGIN_REDIRECT_URL
и знаю о
<form action="?next={{ next|default:"/foo" }}" method="post">
в шаблоне login.html для регистрации django. Вот что я хочу, чтобы произошло:
Если пользователь входит в систему с домашней страницы,
перенаправить их на URL, который содержит
их имя пользователя (/lists/[username]).
Если пользователь входит в систему с любого другого
страницы, верните их на страницу, которую они
были просмотр.
То, как twitter.com справляется с этим, состоит в том, чтобы просто уйти с домашней страницы для зарегистрированных пользователей. Я бы подумал сделать это, и это было бы довольно легко решить, но на моей домашней странице все еще есть полезные вещи, и я не уверен, что хочу, чтобы это прошло для аутентифицированных пользователей. Я бы лучше перенаправил их.
Я думал, что мог бы сделать условие в settings.py, где есть ссылка на LOGIN_REDIRECT_URL
, но объект запроса недоступен в настройках (поэтому я не могу получить доступ к request.user.username для создания перенаправления). И, очевидно, я не могу сделать это в параметре django-registration «default» в шаблоне, потому что имя пользователя неизвестно до входа в систему.
Какой правильный / лучший способ решить эту проблему? Спасибо.
Обновление : Основываясь на предложении С. Лотта, приведенном ниже, это то, что я в итоге использовал (в представлении домашней страницы):
if request.user.is_authenticated() and not request.session.get('homepage_redir'):
request.session['homepage_redir'] = True
return HttpResponseRedirect(reverse('list_view',args=[request.user.username]))
При первом входе с домашней страницы пользователь перенаправляется на свою личную страницу и задается переменная сеанса. При последующих запросах к домашней странице перенаправление не происходит (потому что обнаружена переменная сеанса). Код для перенаправления логинов с любой другой страницы не затрагивается.