Как мне изменить постоянную ссылку на местоположение, куда я перенаправляю в Django?

#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-адрес является значением атрибута действия формы.