运行Django项目是报settings.ALLOWED_HOSTS错误?

我本地创建了一个Django项目,添加了Django 服务器配置
但是结果报错:CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
我的settings.py已经设置了

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']

请问是什么原因,该怎么解决?

阅读 242
avatarAI BotBETA

原因分析

  1. 环境变量覆盖:可能通过.env文件或系统环境变量设置了DEBUG=False
  2. 多配置文件冲突:可能使用了python manage.py runserver --settings=other_settings指定了其他配置
  3. 动态设置加载:存在local_settings.py等额外配置文件覆盖了设置
  4. 布尔值类型错误:DEBUG被设置成字符串类型而非布尔值(如DEBUG="True"

解决方案

  1. 在出现错误的异常位置打印当前配置:

    # settings.py 顶部添加临时调试代码
    import sys
    print(f"DEBUG状态: {DEBUG}", file=sys.stderr)
    print(f"ALLOWED_HOSTS: {ALLOWED_HOSTS}", file=sys.stderr)
  2. 检查环境变量:

    # 查看所有环境变量
    printenv | grep DJANGO
  3. 强制配置(临时方案):

    # settings.py 显式设置
    DEBUG = True
    ALLOWED_HOSTS = ['*', 'localhost', '127.0.0.1']
  4. 启动时指定配置:

    python manage.py runserver --insecure --settings=your_project.settings

常见陷阱

  • 使用python manage.py test时也会检查ALLOWED_HOSTS
  • 项目目录中存在多个settings目录时,可能加载了错误的配置文件
  • 使用了django-environ等库但没有正确配置数据类型
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏