使用Django-Environ配置ALLOWED_HOSTS为何出现NoneType属性错误?
问题描述
执行docker-compose up --build -d --remove-orphans命令时触发错误:
AttributeError: 'NoneType' object has no attribute 'split'
该错误出现在使用Django-Environ配置Django的ALLOWED_HOSTS时。
相关代码
settings.py 片段
import os import environ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) env = environ.Env(DEBUG=(bool, False)) environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
ALLOWED_HOSTS 配置代码
ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS").split(',')
.env 文件配置
ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
错误原因
- 环境变量加载方式错误:你已经通过Django-Environ的
read_env方法加载了.env文件,但后续却用os.environ.get获取变量。在Docker容器环境中,os.environ无法直接读取到Django-Environ加载的.env变量,导致os.environ.get("ALLOWED_HOSTS")返回None,调用split方法时触发NoneType属性错误。 - 分隔符不匹配:即使环境变量能被正确读取,.env文件中用空格分隔主机列表,但代码里用逗号
,split(',')做分割,会导致解析出的ALLOWED_HOSTS是包含空格的单个字符串元素,而非预期的多个主机项。
内容的提问来源于stack exchange,提问作者Juan Monster
相关产品推荐
相关产品推荐

