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

Docker环境下Django管理后台登录失败求助(关联PostgreSQL配置)

Django Admin 登录失败排查方案

针对你遇到的Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.错误,结合你的Docker配置,按以下步骤逐一排查解决:

1. 修复Backend容器的环境变量配置

你的database服务设置了DJANGO_ENV=production,但backend服务未传递该环境变量,导致Backend可能默认使用SQLite数据库,而你创建的超级用户大概率存储在本地SQLite,而非容器内的PostgreSQL中,这会导致账号不匹配。

操作步骤:

  • 修改docker-compose.yml的backend服务,添加环境变量:
backend:
  build: .
  volumes:
  - ./backend:/app/backend
  - ./server:/app/server
  - ./requirements.txt:/app/requirements.txt
  - ./manage.py:/app/manage.py
  environment:
      - DJANGO_ENV=production  # 新增该行,确保Backend使用生产环境的PostgreSQL配置
  depends_on:
    - database
  • 重启容器使配置生效:
docker-compose down && docker-compose up -d --build

2. 初始化PostgreSQL数据库并创建超级用户

容器内的PostgreSQL是全新实例,默认没有Django的用户表,也不存在超级用户账号,必须手动初始化。

操作步骤:

  • 进入Backend容器:
docker-compose exec backend bash
  • 执行数据库迁移,生成Django所需的表结构:
python manage.py migrate
  • 创建超级用户(按提示输入用户名、邮箱、密码):
python manage.py createsuperuser
  • 退出容器后,重新尝试登录localhost:8000/admin

3. 验证Nginx反向代理配置

检查nginx_backend_server的配置文件,确保请求正确转发到Backend服务的端口(Django默认开发服务器端口为8000,若使用Gunicorn则需对应调整)。

示例Nginx配置参考:

server {
    listen 8000;
    location / {
        proxy_pass http://backend:8000;  # 这里的backend是docker-compose中定义的服务名
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

4. 确认账号权限与密码正确性

  • 确保创建超级用户时输入的密码无大小写或输入错误
  • 超级用户默认会自动勾选Staff status和Superuser status,若手动修改过账号信息,需确认这两个权限未被取消

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:12:42