无法启动Django服务器:DEBUG为True仍提示需设置ALLOWED_HOSTS
解决DEBUG=True却提示需设置ALLOWED_HOSTS的问题
先排查以下几个常见原因:
1. 确认Django加载的是你修改的settings文件
很多项目会分环境配置(比如settings/dev.py、settings/prod.py),或者启动时没指定正确的配置模块,导致实际生效的不是你编辑的那套配置:
- 检查启动命令是否带了
--settings参数,比如python manage.py runserver --settings=myproject.settings.dev,确认路径和你修改的文件一致 - 查看系统环境变量
DJANGO_SETTINGS_MODULE:
如果输出的不是你修改的settings路径,要么修改这个环境变量,要么启动时手动指定正确的配置模块。echo $DJANGO_SETTINGS_MODULE # Linux/macOS终端 echo %DJANGO_SETTINGS_MODULE% # Windows命令提示符 $env:DEBUG="True"; python manage.py runserver # Windows PowerShell
2. 检查配置是否被后续代码覆盖
有些项目会在settings文件末尾或者其他脚本里,通过代码动态覆盖DEBUG或ALLOWED_HOSTS,比如:
# 类似这样的代码会根据环境变量覆盖原有配置 import os DEBUG = os.environ.get('DEBUG', 'False') == 'True'
打开你的settings文件从头到尾检查一遍,确保没有后续逻辑把DEBUG改成了False。
3. 清理缓存后重启服务
Django或IDE的缓存可能导致配置没生效:
- 停止服务器,删除项目目录下所有
__pycache__文件夹 - 重启终端/IDE,重新执行
python manage.py runserver
4. 临时强制指定DEBUG启动
启动时直接通过环境变量强制设置DEBUG=True,验证是否能正常运行:
DEBUG=True python manage.py runserver # Linux/macOS set DEBUG=True && python manage.py runserver # Windows cmd $env:DEBUG="True"; python manage.py runserver # Windows PowerShell
如果这样能正常启动,说明你的settings文件里的配置确实被其他逻辑覆盖了,回去仔细排查覆盖代码。
内容的提问来源于stack exchange,提问作者Excellence KAWEJ
相关产品推荐
相关产品推荐

