Вход в систему 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})

с вашей точки зрения. Внесите изменения и отправьте комментарий сюда.

Попробуйте этот

Вернуться на верх