Django сообщает о недействительной форме с методом запроса POST

Я отображаю html при входе в систему по url, а затем вызываю другой url для обработки отправленной формы.
Далее следует метод, который обрабатывает форму -

def process_loginform(request):
    print(request.method)
    form = LoginForm(request.POST)
    if form.is_valid():
        print("Valid form")
    else:
        print("Invalid form")
    return HttpResponseRedirect("/login/welcome/")

Форма входа в систему html -

{% extends 'base.html' %}
{% block content %}
Hello
<form action="/login/process_loginform/" method="post">
        {% csrf_token %}
        <label for="username">Username</label>
        <input id="username-val" type="text" name="username-name" />
        <label for="password">Password</label>
        <input id="password-val" type="password" name="password-name" />
        <input type="submit" value="Login" />
</form>
{% endblock %}

forms.py -

from django import forms
class LoginForm(forms.Form):
    username = forms.CharField(label="username", max_length=64)
    password = forms.CharField(label="username", max_length=64)

Вывод консоли -

(ubuntu-7Wf190Ea) ubuntu@ip-172-31-4-242:~/ka$ ./manage.py runserver 0.0.0.0:1890
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
February 14, 2024 - 10:28:18
Django version 4.2.10, using settings 'ibs.settings'
Starting development server at http://0.0.0.0:1890/
Quit the server with CONTROL-C.

[14/Feb/2024 10:28:23] "GET /login/ HTTP/1.1" 200 729
request: <WSGIRequest: POST '/login/process_loginform/'>
POST
**Invalid form**

Я следую этой документации - https://docs.djangoproject.com/en/5.0/topics/forms/

Почему форма недействительна?

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

Спасибо

Потому что названия ваших полей неверны.

Ваш LoginForm имеет 2 поля с именами username и password. Просто используйте эти имена.

Форма входа в систему html:


{% extends 'base.html' %}

{% block content %}
    Hello
    <form action="/login/process_loginform/" method="post">
    {% csrf_token %}
        <label for="username">Username
        <input id="id_username" type="text" name="username" />
        <label for="password">Password
        <input id="id_password" type="password" name="password" />
        <input type="submit" value="Login" />
    </form>
{% endblock %}

Дополнительная информация:

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