Найти - Пользователи
Полная версия: [Вопрос нуба] Откуда берется такое странное перенапрвление?
Начало » Django » [Вопрос нуба] Откуда берется такое странное перенапрвление?
1
Elaphe
На сайте сделана авторизация, как рассказано в вот этом видео.
Когда пытаюсь авторизоваться, получаю ошибку:
Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/auth/login/auth/login/
Не могу понять, откуда берется такой url. Изначально захожу по http://127.0.0.1:8000/auth/login/, откуда и почему он добавляет еще раз auth/login/ ?
Код функции login:
def login(request):
	args = {}
	args.update(csrf(request))
	if request.POST:
		username = request.POST.get('username','')
		password = request.POST.get('password', '')
		user = auth.authenticate(username=username, password=password)
		if user is not None:
			auth.login(request, user)
			return redirect ('/')
		else:
			args['login_error'] = 'Пользователь не найден'
			return render_to_response('loginsys/login.html', args)
	else:
		return render_to_response('loginsys/login.html', args)
Как видите, redirect идет на ‘/’, т.е. меня, по идее, должно перенаправлять на http://127.0.0.1:8000/.
Откуда такое поведение?
ivanzzz
Изначально захожу по http://127.0.0.1:8000/auth/login/, откуда и почему он добавляет еще раз auth/login/
так вы по нему заходите.
Elaphe
Я по нему захожу, ввожу логин и пароль.
Далее, следуя логике функции login, должен быть осуществлен шаг:
return redirect ('/')
Но редирект происходит не на ‘/’, а на /auth/login/auth/login/
Firik
Форму авторизации киньте, шаблон которая
ZerG
Есть основания полагать что у вас в форме login.html - прописан еще раз auth/login/
Elaphe
Шаблон вот:

{% extends 'pets/main.html' %} 

{% block login %}
<form action = 'auth/login/' method = 'post'>
{% csrf_token %}
<label for='username'>Имя пользователя</label>
<input type='text' name='username' id='username'>
<label for='password'>Пароль</label>
<input type='password' name='password' id='password'>
{% if login_error %}
<label class='error'>{{ login_error }}</label>
{% endif %}
<input class='button' type='submit' value='Войти'>
</form>
{% endblock %}

После удаления из <form action = ‘auth/login/’ method = ‘post’> адреса auth/login/ все заработало.
Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB