Я пытаюсь создать простой веб-сайт с функциями входа в систему, очень похожим на тот, который находится здесь, на SO. Пользователь должен иметь возможность просматривать сайт как анонимный пользователь, и на каждой странице будет ссылка для входа. При нажатии на ссылку входа пользователь будет отправлен в форму для входа. После успешного входа в систему пользователь должен быть возвращен на страницу, откуда он первым нажал ссылку на вход. Я предполагаю, что мне нужно каким-то образом передать url текущей страницы в представление, которое обрабатывает форму входа, но я не могу заставить ее работать.
EDIT: Я понял. Я связался с формой входа, передав текущую страницу как параметр GET, а затем использовал "next" для перенаправления на эту страницу. Спасибо!
ИЗМЕНИТЬ 2: Мои объяснения, похоже, не были ясными, так как здесь был запрошен мой код: Допустим, мы находимся на странице foo.html, и мы не вошли в систему. Теперь мы хотели бы иметь ссылку на foo.html, которая ссылается на login.html. Там мы можем войти и затем перенаправлены обратно в foo.html. Ссылка на foo.html выглядит так:
<a href='/login/?next={{ request.path }}'>Login</a>
Теперь я написал пользовательское окно входа в систему, которое выглядит примерно так:
def login_view(request):
redirect_to = request.REQUEST.get('next', '')
if request.method=='POST':
#create login form...
if valid login credentials have been entered:
return HttpResponseRedirect(redirect_to)
#...
return render_to_response('login.html', locals())
И важная строка в login.html:
<form method="post" action="./?next={{ redirect_to }}">
Так что да, это очень много, надеюсь, что это ясно.