При попытке найти место для хранения и сохранения настроек за пределами settings.py и базы данных я использовал environment.json для переменных среды. Я импортирую их в settings.py.
Моя проблема в том, что когда я пытаюсь изменить или сохранить новые значения в своей среде, env
, settings.py
не замечает изменения - возможно, потому, что время и количество раз settings.py читается Django.
Есть ли способ, которым я мог бы использовать переменные окружения так, как я хочу, например, как показано ниже?
# 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?