Почему Django's AuthenticationForm возвращает странную строку в сообщении об ошибке

Недавно я внедрил Django AuthenticationForm в свой проект и обнаружил, что ошибка возвращает какой-то странный str __all__

Сообщение об ошибке во фронтенде при использовании неправильного пароля:

enter image description here

Мой шаблон

<div class="error-wrapper">
     <div class="errors">{{ form.errors }}</div>
</div>

Поэтому я заглянул в исходный код Django, чтобы проверить форму, которая не включает __all__ в строку сообщения об ошибке:

class AuthenticationForm(forms.Form):
    """
    Base class for authenticating users. Extend this to get a form that accepts
    username/password logins.
    """
    username = UsernameField(widget=forms.TextInput(attrs={'autofocus': True}))
    password = forms.CharField(
        label=_("Password"),
        strip=False,
        widget=forms.PasswordInput(attrs={'autocomplete': 'current-password'}),
    )

    error_messages = {
        'invalid_login': _(
            "Please enter a correct %(username)s and password. Note that both "
            "fields may be case-sensitive."
        ),
        'inactive': _("This account is inactive."),
    }

Чего мне не хватает?

Свойство .errors [Django-doc] возвращает словарь ошибок, где ключи представляют поле, в котором произошла ошибка, а значение - список ошибок. Для ошибок, которые относятся не к одному полю, а к двум или более полям, используется __all__. Таким образом, это не полевые ошибки.

Когда вы рендерите Django from в шаблоне, вы можете использовать {{ form.non_field_errors }} для рендеринга этих ошибок, и {{ form.some_field.errors }} для рендеринга ошибок, относящихся к определенному полю. Вы также можете выполнять итерации form.non_field_errors и form.some_field.errors для получения ошибок по одной, и отображать их по-другому.

Таким образом, вы можете отобразить ошибки, не связанные с полем, с помощью:

<div class="error-wrapper">
     <div class="errors">{{ form.non_field_errors }}</div>
</div>
Вернуться на верх