【发布时间】:2021-05-05 09:36:30
【问题描述】:
我想为我的 Django 项目的生产和开发环境提供不同的 settings.py 文件。为此,我在生产环境中永久添加了一个环境变量(DJANGO_ENV),基于该变量加载不同的 settings.py。但由于某种原因,wsgi.py[下面的代码] 没有访问环境变量,因此if 条件失败。
import os
from django.core.wsgi import get_wsgi_application
if os.environ.get("DJANGO_ENV") == "PROD":
#*this condition is failing for some reason
os.environ['DJANGO_SETTINGS_MODULE']= 'myproject.settings_prod'
else:
os.environ['DJANGO_SETTINGS_MODULE']= 'myproject.settings'
application = get_wsgi_application()
如果我在终端上执行echo $DJANGO_ENV,我会得到“PROD”作为响应,因此变量设置正确。
同样在 python shell 中,我可以访问DJANGO_ENV 变量。
>>> import os
>>> os.environ.get("DJANGO_ENV")
'PROD'
我做错了什么?
【问题讨论】:
-
为什么不添加变量
DJANGO_SETTINGS_MODULE? -
@KlausD.感谢您的回复。你的意思是我可以在生产环境中将
DJANGO_SETTINGS_MODULE设置为myproject.settings_prod?并删除 if 条件?以下是否可以在本地环境中工作os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') ? -
@KlausD。那也行不通。基本问题是wsgi.py没有访问环境变量。我需要重启我的机器吗?