自定义 PasswordValidator 不显示帮助文本

时间:2021-03-13 09:39:30

标签: django-forms django-validation

我创建了一个新的 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 中专门设置了它。

0 个答案:

没有答案