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

Django3.2搭配SQLite3执行createsuperuser创建超级用户报TypeError问题

问题根因

该报错与数据库、迁移操作完全无关,报错触发自Django的密码校验逻辑:

  1. 你项目的settings.py中AUTH_PASSWORD_VALIDATORS配置项里,CommonPasswordValidator(弱密码校验器)的PASSWORD_LIST_PATH参数取值非法,不是合法的字符串/字节类型路径,导致gzip.open加载弱密码字典文件时参数校验失败。
  2. 项目启动时不会触发密码校验器的初始化逻辑,只有在创建超级用户、修改密码等需要校验密码的场景才会加载该组件,所以服务可以正常启动,仅执行createsuperuser时报错。

解决方法

按实际需求选择以下任意一种方案即可:

  • 方案一:不需要弱密码校验功能
    直接删除AUTH_PASSWORD_VALIDATORS列表中CommonPasswordValidator对应的整条配置,保存文件后重新执行python manage.py createsuperuser命令即可。

  • 方案二:保留弱密码校验功能

    1. 如果你使用Django默认的弱密码字典,无需额外配置OPTIONS参数,确保配置段为以下格式即可:
    AUTH_PASSWORD_VALIDATORS = [
        # 其余原有校验器配置保持不变
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
    ]
    
    1. 如果你自定义了弱密码字典路径,确认PASSWORD_LIST_PATH的取值是字符串类型:如果是通过pathlib.Path生成的路径对象,需要用str()方法转为字符串后再赋值,示例如下:
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        'OPTIONS': {
            'password_list_path': str(BASE_DIR / 'custom_common_passwords.txt.gz'),
        }
    },
    
  • 方案三:配置无异常仍报错
    大概率是Django自带的弱密码字典文件丢失,执行命令强制重装对应版本的Django即可:
    pip install --upgrade --force-reinstall Django==3.2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:05