settings.py とデータベースを超えて設定を保存および保存する場所を見つけようとして、環境変数に environment.json を使用しました。これらを settings.py にインポートします。
私の問題は、自分の環境で新しい値を変更または保存しようとしても、おそらく settings.py が Django によって読み取られる時間と回数が原因で、変更env
に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 プロジェクトのどこかで取得された変更可能な設定を他にどのように保存できますか?