Что такое аутентификация на основе пароля в django

Я создал форму, которая наследуется от UserCreationForm, и использую представление на основе класса, которое наследуется от CreateView, и когда я использую runserver и отображаю форму, внизу есть раздел Password-based authentication, который я не замечаю

forms.py

from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm


class RegisterForm(UserCreationForm):
    """Form to Create new User"""

    class Meta:
        model = get_user_model()
        fields = ["username", "password1", "password2"]

views.py

class SignUp(CreateView):
    form_class = RegisterForm
    template_name = "register.html"
    success_url = reverse_lazy("core:Login")
    def form_valid(self, form):
        user = form.save()
        if user:
            login(self.request, user)
        return super().form_valid(form)

register.html

<h1>signup</h1>

    {{form}}

А когда я запустил код, то увидел такой вывод

выводное изображение

поэтому я не ожидал аутентификации на основе пароля.

Мой вопрос о

  1. Что это такое?
  2. Нужно
  3. ли его здесь отображать ?
  4. Как его скрыть?

Начиная с версии Django 5.1 и далее, UserCreationForm по умолчанию имеет поле usable_password. Это связано с функцией Django для установки непригодных паролей для пользователей. Это полезно в том случае, если вы используете какую-то внешнюю аутентификацию Single Sign-On или LDAP.

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

class RegisterForm(UserCreationForm):
    """Form to Create new User"""
    usable_password = None

    class Meta:
        model = get_user_model()
        fields = ["username", "password1", "password2"]
Вернуться на верх