Я хочу разрешить пользователям переходить на их страницу по умолчанию (например, mywebsite.com/userpage), когда они используют форму входа.
Также, если они перейдут на какую-либо другую защищенную паролем страницу на веб-сайте, перенаправьте их сначала на страницу входа в систему и после проверки подлинности верните их на исходную страницу, к которой они пытались получить доступ.
Это то, что у меня есть для функции входа в систему:
views.py
def user_login(request):
if request.method == 'POST':
form = AuthenticationForm(request.POST)
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a successpage
if request.POST['next']:
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect("/" + username + "/")
else:
errors = 'This account has been disabeled.'
else:
# Return an 'invalid login' error message.
errors = 'There is a problem with the user name and/or the password. Please try again.'
else:
form = AuthenticationForm()
return render_to_response("registration/my_login.html", locals(), context_instance=RequestContext(request))
urls.py
urlpatterns = patterns('',
url(r'^login/$', user_login,),
my_login.html
<form action="." method="post" >{% csrf_token %}
{{errors}}
{{ form.as_p }}
<p class="submit"><button type="submit" name="login_user_button" value="Login">Log in</button></p>
<input type="hidden" name="next" value="{{ next }}">
</form>
Моя проблема в том, что я не знаю, как получить значения переменной "next", поэтому я могу использовать ее в моей функции user_login
для перенаправления.
Как вы можете видеть, я пытался получить его с помощью request.POST['next']
, но получил пустую строку, поэтому по какой-то причине никакое значение не было подписано в переменной "next".
Есть идеи?