Вход в систему django не перенаправляет без обновления страницы
Я фронтенд-разработчик и работаю над страницей входа в систему с командой бэкенда, которая использует Django. в моем файле login.html есть форма, которая получает номер телефона и пароль от пользователя. Я получаю данные от пользователя через javascript и после проверки отправляю их в бэкенд через fetch-запрос. но есть проблема. парень из бэкенда сказал, что: "я получаю номер телефона и пароль правильно через ваш запрос и перенаправляет страницу на новый url, если пароль и номер телефона были истинными и Django перенаправляет правильно, но браузер не переходит на новую страницу и я должен обновить браузер. когда я обновляю браузер, он переходит на новую страницу правильно". Я искал в stackoverflow и проверял похожие проблемы с перенаправлением Django, но ни одна из них не была моей проблемой. Я также спросил Gemini, но он не дал мне никакого хорошего ответа. Я предоставляю как код редиректа Django, так и мой Javascript и html код:
def Login(request):
if request.method == 'POST':
phone_number = request.POST.get('phoneNumber')
password = request.POST.get("password")
user = authenticate(request, username=phone_number, password=password)
if user is not None and user.is_active:
login(request, user)
return redirect(reverse('eadmin'))
return JsonResponse({'message' : False})
else:
if request.user.is_authenticated:
return redirect(reverse('eadmin'))
return render(request, '../templates/login/login.html')
salam dash sepehr ..... Смотрите, проблема возникла из вашего шаблона. В вашем login.html
вы должны изменить атрибут name тега phone как равный вашему views.py . То есть в шаблоне вы набрали phone
, а в логине view вы в request.POST['phone']
набрали phoneNumber
. Это и есть настоящая проблема. Сделайте их одинаковыми, и все будет в порядке.
Еще одна вещь: вам нужно удалить и эту строку (я думаю):
return JsonResponse({'message' : False})
с вашей точки зрения. Внесите изменения и отправьте комментарий сюда.
Попробуйте этот