Синтаксис envfile. Как должны быть записаны целые числа (например, PORT)
Интересно, одинаковы ли эти конфигурации:
Конфигурация 1:
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_USE_SSL=None
Конфигурация 2:
EMAIL_PORT='587'
EMAIL_USE_TLS='True'
EMAIL_USE_SSL='None'
settings.py (или просто произвольный файл python):
EMAIL_PORT = os.getenv('EMAIL_PORT')
EMAIL_USE_TLS = os.getenv('EMAIL_USE_TLS')
EMAIL_USE_SSL = os.getenv('EMAIL_USE_SSL')
Получит ли мой, скажем, EMAIL_PORT в settings.py значение 587 или вместо него будет '587', или если EMAIL_USE_TLS вместо него будет получен питонический булеан True
или 'True'
? Каково предложение по присвоению переменных в envfile? Как обрабатывать такие булевы, целые числа или любые другие нестроковые значения?
Спасибо!
Как упоминается в Python Docs os.getenv
всегда будет возвращать str
:
ключ, значение по умолчанию и результат являются строками.
(выделено мной)
Для порта вы можете просто сделать следующее:
EMAIL_PORT = int(os.getenv('EMAIL_PORT'))
Но для булевой функции я бы установил значение 0 или 1 в env, так что вы можете сделать следующее:
Config:
EMAIL_USE_TLS=1
Python:
EMAIL_USE_TLS = bool(int(os.getenv('EMAIL_USE_TLS')))
Оба эти метода полагаются на корректность переменных окружения, поэтому вы можете захотеть добавить обработку ошибок.