#django
#django
Вопрос:
Когда пользователь входит в приложение Django, как мне изменить URL страницы, которая отображается после входа в систему? В настоящее время у меня есть следующий вид:
def users_login(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect("/start/")
Я заявляю, что приложение должно перенаправлять на domain.com/start / , но, к сожалению, это не так. Вместо этого он переходит в domain/login / , который является местоположением в атрибуте action формы входа.
Когда на мой взгляд, у меня есть следующий код:
return redirect('http://www.google.com/')
Я получаю сообщение об ошибке. Я не понимаю, почему. Это происходит только с формами. После отправки пользователем формы URL-адрес остается на URL атрибута action, даже если соответствующее представление перенаправляет на статическую страницу.
Комментарии:
1. Вы уверены, что это не так? Я полагаю, что сначала он перенаправляет на
"/start/"
, а затем наdomain/login/
. Проверьте это с помощью Firebug.2. Здравствуйте, он не перенаправляет на /start /, а затем на domain / login /.
Ответ №1:
Просто добавьте эту строку в свой settings.py:
LOGIN_REDIRECT_URL = '/start/'
Ответ №2:
Евгений Солдатов прав,
LOGIN_REDIRECT_URL = '/start'
но вы должны использовать встроенное представление входа, чтобы заставить его работать (вы должны использовать его в любом случае).
Комментарии:
1. Как бы я обобщил это для всех форм? Когда пользователь создает новую запись, URL-адрес по-прежнему является URL-адресом атрибута action формы, но я хочу, чтобы это была постоянная ссылка на новую запись.
2. @egidra В Django такой проблемы нет. Просто используйте
HttpResponseRedirect
или лучшеredirect
, и все будет хорошо.3. В настоящее время я использую HttpResponseRedirect, но когда пользователь отправляет форму, URL-адрес является значением атрибута действия формы.