Django - неудачный вход перенаправляет на другую страницу

Я новичок в Django и пытаюсь использовать систему аутентификации. Мне удалось заставить ее работать, используя стандартные Auth URLS. (/accounts/login) и т. д.

Я хочу вывести форму входа на домашнюю страницу, чтобы она всегда была доступна для неаутентифицированных пользователей. Мне удалось отобразить форму, и когда пользователь вводит правильные данные, вход проходит успешно. К сожалению, когда пользователь вводит неправильную информацию, он в настоящее время перенаправляет меня на url входа (accounts/login) Я пытался исправить это, но я либо нарушаю аутентификацию, либо она перенаправляет, и я не могу найти решение.

Views.py:

def index(request):
    if request.method == 'POST':
        form = AuthenticationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
    else:
        form = AuthenticationForm()
    return render(request, 'home.html', { 'form': form })

Шаблон HTML:

<form class="p-4 p-md-5 border rounded-3 bg-body-tertiary" action="{% url 'login' %}" method="post">
                    {% csrf_token %}

                    <div class="form-floating mb-3">
                        <input class="form-control" id="{{ form.username.id_for_label }}" name="username" type="text" />
                        <label for="{{ form.username.id_for_label }}">{{ form.username.label }}</label>
                    </div>

                    <div class="form-floating mb-3">
                        <input class="form-control" id="{{ form.password.id_for_label }}" name="password" type="password" />
                        <label for="{{ form.password.id_for_label }}">{{ form.password.label }}</label>
                    </div>

                    {% if form.errors %}
                        <div class="justify-content-center d-flex w-75 mt-1 mb-1 alert alert-danger border-0">
                            <small class="text-center mx-4">Your Username and Password Did Not Match!</small>
                        </div>
                    {% endif %}
                    <input class="w-100 btn btn-primary" type="submit" name="submit" value="Login"></input>
                    
                    <a class="text-center pb-3 text-decoration-none" href="{% url 'register' %}"><small class="text-muted">Don't have an account?</small></a>
</form>

urls.py

path('', views.index, name="home"),

Я пробовал редактировать действие в форме, чтобы оно переводило меня в Home, или вообще удалять действие, однако это нарушает работу auth.

Проблема здесь в том, что AuthenticationForm не обрабатывает логику аутентификации для вас; это просто форма проверки. Вы должны использовать функции Django authenticate и login для обработки запросов на вход непосредственно в вашем представлении.

Обновлено views.py

from django.contrib.auth import authenticate, login
def index(request):
    form = AuthenticationForm(data=request.POST or None)
    
    if request.method == 'POST':
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(request, username=username, password=password)
            
            if user is not None:
                login(request, user)
                return redirect('/')  # Redirect to home after successful login
        
    return render(request, 'home.html', {'form': form})


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