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

DEBUG模式下配置Django Debug Toolbar后出现404错误该如何解决?

Django Debug Toolbar 404 错误排查解决步骤
  • 核心问题修复:修正urls.py路由覆盖逻辑

你当前的DEBUG判断块中直接对urlpatterns重新赋值,会清空之前定义的admin、业务路由,导致所有原有路由失效,正确写法是在原有路由基础上追加debug toolbar路由:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('mileage.urls')),
]

if settings.DEBUG:
    import debug_toolbar
    # 先加debug toolbar路由,再拼接原有路由,不要直接覆盖原有urlpatterns
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
  • 调整中间件优先级

DebugToolbarMiddleware需要放在所有响应类中间件的最前方,避免被其他中间件拦截请求,调整MIDDLEWARE顺序如下:

MIDDLEWARE = [
    # 将debug toolbar中间件移到最顶部
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    # 其余原有中间件保持原有顺序不变
    ...
]
  • 确认DEBUG开关状态

检查settings.py中DEBUG = True是否配置正确,DEBUG为False时debug toolbar的路由不会注册,自然返回404。

  • 本地开发环境无需执行collectstatic

collectstatic是生产环境打包静态资源用的命令,本地开发时Django会自动从各APP的static目录、STATICFILES_DIRS路径中拉取静态资源,提前执行collectstatic反而可能导致静态资源优先级冲突,可先删除手动生成的static根目录,重启服务测试。

  • 校验INTERNAL_IPS配置

如果是通过容器、虚拟机或者局域网其他设备访问服务,访问IP不是127.0.0.1时,需要把对应访问IP加入INTERNAL_IPS列表,临时测试也可以配置为INTERNAL_IPS = ["*"]验证是否为IP限制导致的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:54:04