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

创建开发/生产环境配置文件后触发ALLOWED_HOSTS配置错误

Django多环境配置错误排查与解决

我想要为开发(dev)和生产(prod)环境创建两份不同的配置文件,于是在存放配置的app目录下创建了一个Python包,但即使使用旧配置运行应用,仍收到如下错误:

CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

项目结构说明:

  • 项目根目录
    • app(配置目录,已设为Python包)
      • init.py
      • settings.py(原有配置文件)
      • dev.py(开发环境配置)
      • prod.py(生产环境配置)
    • manage.py
    • 其他Django项目文件

错误原因与解决步骤

1. 确认当前加载的配置文件

先明确应用启动时实际加载的是哪份配置,避免误加载了关闭DEBUG但未配置ALLOWED_HOSTS的文件。执行以下命令查看:

python manage.py shell -c "from django.conf import settings; print(settings.SETTINGS_MODULE)"

2. 补全对应配置的ALLOWED_HOSTS

  • 若加载的是生产环境配置(如prod.py),且DEBUG = False,必须指定允许访问的主机/域名:
    # prod.py
    DEBUG = False
    ALLOWED_HOSTS = ['你的域名', '服务器IP']  # 替换为实际值
    
  • 若加载的是开发环境配置(如dev.py),可开启DEBUG并放宽主机限制:
    # dev.py
    DEBUG = True
    ALLOWED_HOSTS = ['*']
    
  • 若使用旧的settings.py,检查其中的DEBUG和ALLOWED_HOSTS:如果DEBUG设为False,同样需要配置ALLOWED_HOSTS。

3. 启动时指定正确配置

  • 运行原有settings.py:直接用默认命令
    python manage.py runserver
    
  • 切换到指定环境配置:添加--settings参数
    # 启动开发环境
    python manage.py runserver --settings=app.dev
    # 启动生产环境
    python manage.py runserver --settings=app.prod
    

4. 优化配置结构(可选)

为减少重复代码,可创建base.py存放通用配置,让dev和prod配置继承它:

  • base.py:写入INSTALLED_APPS、DATABASES等所有环境通用的配置
  • dev.py:
    from .base import *
    
    DEBUG = True
    ALLOWED_HOSTS = ['*']
    # 其他开发专属配置(如调试工具、测试数据库等)
    
  • prod.py:
    from .base import *
    
    DEBUG = False
    ALLOWED_HOSTS = ['你的域名']
    # 其他生产专属配置(如静态文件压缩、缓存配置等)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:15:34