You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 2.0如何添加自定义密码验证器(含大小写/符号/数字要求)

自定义Django密码验证器:添加大写字母、符号、数字要求

当然有简便的方法来扩展Django的密码验证规则啦!Django的AUTH_PASSWORD_VALIDATORS系统本身就支持自定义验证器,完全可以满足你要求密码包含大写字母、数字和特殊符号的需求,而且做法规范,符合框架设计逻辑。

步骤1:创建自定义密码验证器类

首先,在你的Django项目里选一个合适的app(比如专门处理用户逻辑的accounts app),创建一个validators.py文件,编写继承自BasePasswordValidator的自定义验证器:

from django.contrib.auth.password_validation import BasePasswordValidator
from django.core.exceptions import ValidationError
import re

class ComplexPasswordValidator(BasePasswordValidator):
    def validate(self, password, user=None):
        # 逐一检查密码复杂度要求
        if not re.search(r'[A-Z]', password):
            raise ValidationError("密码必须包含至少一个大写字母。")
        if not re.search(r'[0-9]', password):
            raise ValidationError("密码必须包含至少一个数字。")
        if not re.search(r'[^A-Za-z0-9]', password):
            raise ValidationError("密码必须包含至少一个特殊符号(如!@#$%^&*等)。")
    
    def get_help_text(self):
        # 该方法返回的文本会自动显示在密码输入框下方,提示用户规则
        return "密码必须包含至少一个大写字母、一个数字和一个特殊符号(非字母数字)。"

步骤2:在settings.py中注册自定义验证器

打开项目根目录的settings.py,找到AUTH_PASSWORD_VALIDATORS配置项,把你刚写的自定义验证器添加到列表末尾(保留默认的四个验证器,这样既有基础规则又能叠加自定义规则):

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',
    },
    # 添加自定义验证器,注意路径要对应你的app和文件
    {
        'NAME': 'accounts.validators.ComplexPasswordValidator',
    },
]

为什么推荐这种方式?

  • 完全契合Django的扩展机制,和系统自带验证器逻辑统一,后期维护更省心;
  • 自定义的get_help_text方法能自动在用户注册、修改密码的表单中显示提示信息,不用额外处理前端文本;
  • 验证逻辑集中在一个类里,后续要调整规则(比如修改特殊符号的范围),只需要修改这个类即可,不用到处找零散的正则代码。

如果你只是临时测试或者快速实现,也可以直接在表单的clean_password方法里写正则检查,但用自定义验证器类是更专业、可复用的做法哦。

内容的提问来源于stack exchange,提问作者Ruchit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:44:39