settings.py 및 데이터베이스 설정을 저장하고 저장할 장소를 찾으려고 할 때 환경 변수에 environment.json을 사용했습니다. 나는 이것을 settings.py에서 가져온다.Django 설정에 환경 변수를 사용할 수 없습니다
내 환경에서 새로운 값을 변경하거나 저장할 때 env
, settings.py
은 변경 사항을 알지 못합니다. 아마도 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
검색합니다 변경 설정을 저장할 수 ?
셸에서'putenv()'를 사용하면 환경 값을 변경하지 않습니다. 또한'putenv()'가 지원되면,'os.environ'에있는 항목에 대한 할당이 자동으로'putenv()'에 대응하는 호출로 변환됩니다; 그러나'putenv()'에 대한 호출은'os.environ'을 갱신하지 않으므로 실제로 os.environ'의 항목에 할당하는 것이 바람직합니다. "나는 동적으로 설정을 저장하고 변경하는 또 다른 방법을 찾아야 할 수도 있습니다 전자 메일 용. – Kiwi
죄송합니다 ... 당신 말이 맞아요, 나는 그 부분을 제거 할 것입니다. 나머지 조언은 여전히 중요합니다 :) – Wolph
이봐, 적어도 파이썬에서 환경 변수 조작에 관한 새로운 것들을 배웠다. ;) – Kiwi