Docker环境Django Debug Toolbar报initialized_only意外参数错误
问题原因
报错本质是Django和Django Debug Toolbar的版本不兼容:
BaseConnectionHandler.all()方法的initialized_only关键字参数是Django 4.2版本才新增的接口- 当环境中安装的Django Debug Toolbar版本≥4.2.0,但项目运行的Django版本<4.2时,Toolbar的数据库面板会调用带该参数的方法,直接触发参数不存在的异常。
你贴出的settings.py中INTERNAL_IPS配置、中间件/注册应用配置,以及urls.py中的路由配置均符合Docker环境下的Toolbar部署要求,报错和这部分配置无关。
修复方案
根据项目实际依赖约束二选一即可:
方案1:升级Django版本(项目无版本锁定要求时选这个)
将Django升级到4.2及以上版本,匹配新版Debug Toolbar的依赖要求,执行安装命令:
pip install "Django>=4.2"
如果用requirements.txt或pyproject.toml管理依赖,修改对应Django版本约束后,重新构建Docker镜像、重启容器即可。
方案2:降级Django Debug Toolbar版本(项目无法升级Django时选这个)
根据当前Django版本安装对应兼容的Debug Toolbar版本:
- Django 4.1.x 适配版本:
django-debug-toolbar>=4.1,<4.2 - Django 4.0.x 适配版本:
django-debug-toolbar>=4.0,<4.2 - Django 3.2.x 适配版本:
django-debug-toolbar>=3.2,<4.0
以Django4.1为例,执行安装命令:
pip install "django-debug-toolbar>=4.1,<4.2"
修改依赖后同样需要重新构建Docker镜像、重启服务,不需要调整你之前写的任何Toolbar配置代码。
验证
服务重启后访问项目页面,右侧会正常加载Debug Toolbar调试面板,报错消失。
内容的提问来源于stack exchange,提问作者Sir Alidadi
相关产品推荐
相关产品推荐

