我想知道这些配置是否相同:
配置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')
我的,比方说settings.py中的EMAIL_PORT会得到587的值吗?或者它将改为'587',或者如果EMAIL_USE_TLS将得到Python布尔值True
或'True'
?在envfile中分配变量的建议是什么?如何处理此类布尔值、整数或任何其他非字符串值?
谢谢!
如Python文档中所述,os.getenv
将始终返回一个str
:
键,默认值和结果为str.
(强调矿(
对于端口,您可以简单地执行以下操作:
EMAIL_PORT = int(os.getenv('EMAIL_PORT'))
但对于布尔值,我会在env中设置一个0或1的值,这样您就可以执行以下操作:
配置:
EMAIL_USE_TLS=1
Python:
EMAIL_USE_TLS = bool(int(os.getenv('EMAIL_USE_TLS')))
这两种方法都依赖于环境变量的正确性,因此您可能需要添加错误处理。