Сброс URL-адреса Django после сбоя аутентификации

    if user is not None:
        login(request, user)  
        return redirect('home')  
    else:
        error_message = "Invalid username or password."
        return render(request, 'login.html', {'error_message': error_message})

При использовании приведенного выше кода, если пользователь введет неправильные учетные данные, login.html отобразится успешно с сообщением об ошибке.

Но теперь URL - http://localhost:8000/authentication_view/.

Теперь, если пользователь повторно введет учетные данные, URL будет http://localhost:8000/authentication_view/authentication_view/, и возникнет ошибка Page Not Found.

If I use return redirect('login_view'), then the error message will not show.

Может ли кто-нибудь помочь мне, как показать страницу входа в систему с сообщением об ошибке без добавления Authentication View в URL?

Я ожидал: если пользователь вводит неверные учетные данные, он получает сообщение об ошибке и возвращается на страницу входа. Теперь он может повторно ввести учетные данные. Но теперь страница входа не может быть использована, потому что имя представления аутентификации уже добавлено в URL. При новой попытке входа в систему имя представления аутентификации будет добавлено в URL дважды.

Проблема с действием, упомянутым на html-странице в теге формы.

у вас должно быть что-то вроде <form method="post" action="authentication_view/">

Для решения проблемы лучше всего удалить действие из тега формы. по умолчанию html-форма отправляется на ту же страницу. сделайте что-то вроде этого.

<form method="post">

Если вы загружаете страницу с другого url и отправляете форму на другой, укажите полный url. в вашем случае он должен быть.

<form method="post" action="/authentication_view">

Покажите html-код страницы входа в систему Ошибка может быть связана с атрибутом action в форме входа в систему Лучше использовать динамические ссылки, как в : action = {% url 'login_view' %} или имя, которое вы дали представлению в urls.py.

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