在尝试找到存储和保存 settings.py 和数据库之外的设置的地方时,我使用 environment.json 作为环境变量。我在 settings.py 中导入这些。
我的问题是,当我尝试在我的环境中更改或存储新值时env
,settings.py
并没有注意到更改 - 可能是因为 Django 读取了 settings.py 的时间和次数。
有没有一种方法可以像下面尝试的那样以我想要的方式使用我的环境变量?
# settings.py
import json
with open('/home/dotcloud/environment.json') as f:
env = json.load(f)
EMAIL_HOST = env.get('EMAIL_PORT', '500')
# views.py
import json
def site_configuration(request):
with open('/home/dotcloud/environment.json') as f:
env = json.load(f)
if request.method == 'POST':
os.environ['EMAIL_PORT'] = request.POST['email_port']
return render(request, ...)
# python manage.py shell demo
>>> import json
>>> with open('/home/dotcloud/environment.json') as f:
... env = json.load(f)
...
>>> project_settings.EMAIL_PORT
'500'
>>> env['EMAIL_PORT']
Traceback (most recent call last):
File "<console>", line 1, in <module>
KeyError: 'EMAIL_PORT'
>>> env['EMAIL_PORT'] = "123"
>>> env['EMAIL_PORT']
'123'
>>> project_settings.EMAIL_PORT
'500'
>>> project_settings.EMAIL_PORT == env['EMAIL_PORT']
False'
如果没有,我还能如何存储由settings.py
我的 Django 项目中某处检索到的可变设置?