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

Я создал форму регистрации в django, используя формы django, и когда я запускаю свой код, есть поле, которое я не ожидал. Аутентификация на основе пароля. Я не использовал ее и понятия не имею, что это такое, поэтому любой может сказать мне, что это такое и как мне можно удалить его из формы регистрации пользователя?

форма.py

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

class RegisterForm(UserCreationForm):
    """Form to Create new User"""
    def __init__(self, *args,hashed_code=None, **kwargs) -> None:
        super(RegisterForm,self).__init__(*args, **kwargs)
        self.hashed_code = hashed_code

    
    code = forms.CharField(max_length=4,
                           required=True,
                           label = "code",
                           help_text = "Enter the four-digit code"
                           )
    
    def is_valid(self):
        """Return True if the form has no errors, or False otherwise."""
        if not self.hashed_code:
            self.add_error("code","you have not any valid code get the code first")
        elif not check_password(self.data.get("code"),self.hashed_code) :
            self.add_error("code","code is invalid")
        return self.is_bound and not self.errors
        
    
    
    class Meta:
        model = get_user_model()
        fields = ["email", "password1", "password2","code"]
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это поле происходит от BaseUserCreationForm, суперкласса UserCreationForm.

На самом деле это регресс в Django 5.1, и он будет исправлен, когда https://github.com/django/django/pull/18484 будет выпущен в Django 5.1.1.

В качестве обходного пути вы сможете удалить поле из своего подкласса с помощью

class RegisterForm(UserCreationForm):
    usable_password = None  # Workaround; see https://github.com/django/django/pull/18484 

как мне теперь удалить это из формы

mehdi ahmadi 29.08.2024 15:03

Другие вопросы по теме