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,
|
}
|