我创建了一个新的 MinLengthPasswordValidator
class CustomMinimumLengthValidator(object):
def __init__(self, min_length=8): # put default min_length here
self.min_length = min_length
def validate(self, password, user=None):
if len(password) < self.min_length:
raise ValidationError((f"It's to damn short! It has to be {self.min_length} long."),
code='password_too_short'
)
def get_help_text(self):
return ngettext(
# you can also change the help text to whatever you want for use in the templates (password.help_text)
"Min. %(min_length)d numbers.",
"Min, %(min_length)d numbers.",
self.min_length
) % {'min_length': self.min_length}
并将其添加到 settings.py
AUTH_PASSWORD_VALIDATORS = [
#{
# 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
#},
{
'NAME': 'users.custom_password_validators.CustomMinimumLengthValidator',
},
]
在users/form.py
我有
from .custom_password_validators import CustomMinimumLengthValidator
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
password1 = forms.CharField(
widget=forms.PasswordInput,
label="Password",
)
password2 = forms.CharField(
label="Password (igen)",
widget=forms.PasswordInput,
help_text="",
)
问题是 password1
中没有帮助文本,除非我在 users/forms.py
中专门设置了它。