新建Django项目admin路由被旧项目Django-Allauth配置覆盖如何解决
可能的原因及对应解决方案
1. 端口残留旧服务进程
你可能之前启动的旧项目服务没有正常关闭,仍然占用8000端口,新启动的项目实际上没有成功绑定端口,所有请求还是打到了残留的旧服务进程上。
解决方法:
先杀掉所有占用8000端口的进程,再重启新项目:
- Windows系统:
执行命令查看占用端口的进程PID:netstat -ano | findstr :8000
执行命令杀死对应进程:taskkill /PID 查到的PID值 /F - Mac/Linux系统:
执行命令查看占用端口的进程PID:lsof -i:8000
执行命令杀死对应进程:kill -9 查到的PID值
2. 浏览器缓存了重定向规则
旧项目运行时,你访问/admin触发了301/302重定向到/accounts/login,这类重定向会被浏览器长期缓存,即使启动了新项目,浏览器也会直接跳转缓存的旧路由,不会发送请求到新服务。
解决方法:
打开浏览器无痕/隐私模式访问http://127.0.0.1:8000/admin/,或者清除浏览器中127.0.0.1站点的所有缓存后再试。
3. Django配置项异常
Django默认的登录跳转地址LOGIN_URL值为/accounts/login/,如果你的配置触发了全局登录校验,就会自动跳转到这个地址,而你当前项目没有配置对应的路由,就会返回404。
解决方法:
打开项目settings.py文件做以下检查:
- 显式配置
LOGIN_URL = '/admin/login/',指定登录跳转地址为admin自带的登录页 - 检查
MIDDLEWARE列表,排查是否加入了自定义的全局登录拦截中间件,这类中间件会强制未登录请求跳转到LOGIN_URL,绕过admin自带的登录逻辑 - 确认
INSTALLED_APPS中已经启用django.contrib.admin和django.contrib.auth两个核心依赖应用
4. 路由配置冲突
如果admin路由的配置顺序在其他通配符路由之后,会导致请求被优先匹配到其他规则,没有走到admin的路由逻辑。
解决方法:
调整urls.py中的路由顺序,把path('admin/', admin.site.urls)放在所有路由规则的最前面,避免被其他规则拦截。
内容的提问来源于stack exchange,提问作者Zuckerbrenner
相关产品推荐
相关产品推荐

