Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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,
        }