В ваших input
типах отсутствует атрибут name. Согласно документам Mozilla :
Строка, указывающая имя для элемента управления вводом. Это имя отправляется вместе со значением элемента управления при отправке данных формы.
Таким образом, имя отправляется вместе с формой. Но что, если нет атрибута name
? В той же документации объясняется:
Считайте имя обязательным атрибутом (даже если это не так). Если для ввода не указано имя или имя пустое, значение ввода не передается вместе с формой.
Таким образом, ваше имя пользователя и пароль не отправляются бэкэнду.
Вам необходимо предоставить атрибуты имени для ваших типов ввода.
<form class="user" method="post" action="{% url 'login' %}">
{% csrf_token %}
<div class="form-group">
<input type="text" class="form-control form-control-user" id="exampleInputUserName" placeholder="Username" `name="username"`>
</div>
<div class="form-group">
<input type="password" class="form-control form-control-user" id="exampleInputPassword" placeholder="Password" name="password">
</div>
<input type="submit" class="btn btn-primary btn-user btn-block" value="Login">
<input type="hidden" name="next" value="{{ next }}">
</form>
Это проблема внешнего интерфейса, не связанная с Django.