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

为什么我的Django自定义用户模型的注册机制无法正常工作?

问题根因

你自定义用户模型中is_active字段默认值设为False,Django官方默认的身份认证后端会校验用户激活状态,未激活用户会被直接判定为登录凭证无效,所以会弹出用户名/密码错误的提示。
而你创建的超级用户可以正常登录,是因为create_superuser方法中手动设置了is_active=True,绕过了这个限制。

解决方案

方案1(无需邮箱激活,注册即可登录)

直接修改models.py中UserModel的is_active字段默认值:

# 原代码
is_active = models.BooleanField(default=False)
# 修改为
is_active = models.BooleanField(default=True)

修改完成后执行以下命令同步数据库结构:

python manage.py makemigrations
python manage.py migrate

此前已注册的用户可以进入Django后台管理页,在对应用户详情页勾选is_active选项保存即可正常登录。

方案2(需要邮箱激活流程)

如果你的业务要求用户注册后需要点击邮件链接激活账号,你需要额外补充以下逻辑:

  1. 注册成功后生成激活令牌,向用户填写的邮箱发送带令牌的激活链接
  2. 新增激活接口,校验令牌有效性后将对应用户的is_active字段设置为True
  3. 可在登录页添加「重新发送激活邮件」入口,方便用户重新获取激活链接

内容的提问来源于stack exchange,提问作者Vijay Anand. R

相关产品推荐
方舟 Agent Plan

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

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