Я пытаюсь создать простой веб-сайт с функциональностью входа, очень похожей на ту, что здесь, на SO.
Пользователь должен иметь возможность просматривать сайт как анонимный пользователь, и на каждой странице будет ссылка для входа. При нажатии на ссылку для входа в систему пользователь попадает в форму для входа. После успешного входа в систему пользователь должен вернуться на страницу, с которой он сначала щелкнул ссылку для входа.
Я предполагаю, что мне нужно каким-то образом передать URL текущей страницы представлению, которое обрабатывает форму входа, но я не могу заставить ее работать.
EDIT:
Я понял. Я связался с формой входа, передав текущую страницу в качестве параметра GET, а затем использовал «следующий» для перенаправления на эту страницу. Спасибо!
РЕДАКТИРОВАТЬ 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 }}">
Так что да, вот и все, надеюсь, это прояснит.