How to use custom password validators beside the django auth password validators? How to use custom password validators beside the django auth password validators? django django

How to use custom password validators beside the django auth password validators?


So, as e4c5 mentioned, it is really simple and straightforward.

My CustomPasswordValidator looks like this:

from django.core.exceptions import ValidationErrorfrom django.utils.translation import ugettext as _class CustomPasswordValidator():    def __init__(self, min_length=1):        self.min_length = min_length    def validate(self, password, user=None):        special_characters = "[~\!@#\$%\^&\*\(\)_\+{}\":;'\[\]]"        if not any(char.isdigit() for char in password):            raise ValidationError(_('Password must contain at least %(min_length)d digit.') % {'min_length': self.min_length})        if not any(char.isalpha() for char in password):            raise ValidationError(_('Password must contain at least %(min_length)d letter.') % {'min_length': self.min_length})        if not any(char in special_characters for char in password):            raise ValidationError(_('Password must contain at least %(min_length)d special character.') % {'min_length': self.min_length})    def get_help_text(self):        return ""

Just add it to the list of AUTH_PASSWORD_VALIDATORS in settings.py and that's it!

AUTH_PASSWORD_VALIDATORS = [{    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},{   'NAME': 'registration.validators.CustomPasswordValidator',},]