from django.conf import settings from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ class PasswordLengthValidator: def __init__(self, min_length=settings.AUTH_PASSWORD_MIN_LENGTH, max_length=settings.AUTH_PASSWORD_MAX_LENGTH): self.min_length = min_length self.max_length = max_length def validate(self, password, user=None): if len(password) < self.min_length: raise ValidationError( _('请输入长度在 %(min_length)d–%(max_length)d 个字符之间的密码。'), code='password_too_short', params={'min_length': self.min_length, 'max_length': self.max_length}, ) if len(password) > self.max_length: raise ValidationError( _('请输入长度在 %(min_length)d–%(max_length)d 个字符之间的密码。'), code='password_too_long', params={'min_length': self.min_length, 'max_length': self.max_length}, ) def get_help_text(self): return _('您的密码必须在 %(min_length)d 到 %(max_length)d 个字符之间。') % { 'min_length': self.min_length, 'max_length': self.max_length, }