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

Django本地运行且DEBUG=True,未显示调试错误页反而提示服务器错误

嘿,这个问题我在开发Django项目时碰到过好几次,咱们一步步来排查:

1. 先检查 ALLOWED_HOSTS 配置

虽然你用localhost访问,但Django在DEBUG模式下对这个设置其实还是有要求的。打开你的settings.py,确保里面包含了当前访问的地址:

ALLOWED_HOSTS = ['localhost', '127.0.0.1']

调试阶段嫌麻烦的话,直接设成ALLOWED_HOSTS = ['*']也没问题(不过生产环境绝对不能这么干)。如果ALLOWED_HOSTS没包含你访问的域名/IP,Django会直接返回通用500错误,不会显示调试页面。

2. 确认有没有自定义的500错误视图

如果你之前为生产环境写过自定义的500.html模板,或者在urls.py里配置了自定义的500错误处理视图,那即使DEBUG=True,Django也会优先用这个自定义的错误页面,而不是默认的调试界面。你可以先暂时把这些自定义代码注释掉,再刷新页面试试。

3. 排查第三方中间件的干扰

有些第三方中间件(比如错误跟踪、性能监控类的)可能会在DEBUG模式下也拦截错误,替换成通用提示。你可以打开settings.py里的MIDDLEWARE列表,先把非Django自带的中间件逐个注释掉,重启服务器后测试,看看是不是某个中间件导致的问题。

4. 验证服务器加载的是正确的settings文件

有时候开发环境会出现加载错配置文件的情况(比如不小心用了生产环境的settings)。你可以随便找个视图,加一行代码打印当前的DEBUG状态:

from django.conf import settings
print("当前DEBUG状态:", settings.DEBUG)

启动服务器后看终端输出,如果显示False,那肯定是加载了错误的配置文件,得检查你的启动命令或者环境变量设置。

5. 试试清除浏览器缓存或用隐私模式访问

有时候浏览器缓存了旧的错误页面,哪怕后端已经改成调试模式,你看到的还是之前的缓存页面。试试清除浏览器缓存,或者用无痕/隐私窗口打开localhost,应该能解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:06:42