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

登录Django管理面板提示账号错误,自定义超级用户无法登录求助

问题排查与解决方案

1. 确认settings.py中配置了自定义用户模型

Django默认使用自带的auth.User模型,如果你定义了自定义User模型,必须在settings.py中添加以下配置,否则admin会识别不到你的用户:

AUTH_USER_MODEL = '你的应用名.User'

注意替换你的应用名为实际的app名称(比如如果你的models.py在名为accounts的app里,就写accounts.User)。

2. 检查admin.py是否正确注册自定义User模型

需要用Django自带的UserAdmin来注册你的自定义User模型,否则admin的登录表单和用户管理会不兼容。在admin.py中添加:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

admin.site.register(User, UserAdmin)

3. 验证密码哈希是否正确

虽然你的_create_user方法用了make_password生成哈希,但可以手动验证一下:
进入Django shell:

python manage.py shell

然后执行:

from django.contrib.auth.hashers import check_password
from 你的应用名.models import User
user = User.objects.get(email='你的超级用户邮箱')
print(check_password('你的密码', user.password))

如果输出True说明密码哈希没问题,否则需要重新创建超级用户(可能创建时密码输入有误)。

4. 检查认证后端配置

如果settings.py中设置了AUTHENTICATION_BACKENDS,确保包含默认的模型后端:

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    # 其他自定义后端...
]

如果缺少这个,Django无法通过模型验证用户身份。

5. 确认用户状态字段

再次确认数据库中该用户的is_staff、is_superuser、is_active均为True,可以通过shell查询:

user = User.objects.get(email='你的超级用户邮箱')
print(user.is_staff, user.is_superuser, user.is_active)

如果有任何一个为False,更新后保存:

user.is_staff = True
user.is_superuser = True
user.is_active = True
user.save()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:52:50