Я создал форму регистрации в django, используя формы django, и когда я запускаю свой код, есть поле, которое я не ожидал. Аутентификация на основе пароля. Я не использовал ее и понятия не имею, что это такое, поэтому любой может сказать мне, что это такое и как мне можно удалить его из формы регистрации пользователя?
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"]
Это поле происходит от 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
как мне теперь удалить это из формы