从os.environ
获取多个配置值时,最好在python代码中使用默认值,以轻松地允许应用程序在多个上下文中启动。
典型的django settings.py具有许多
SOME_SETTING = os.environ.get('SOME_SETTING')
行。
为提供明智的默认设置,我们选择了
SOME_SETTING = os.environ.get('SOME_SETTING') or "theValue"
但这Example是因为用
调用应用程序SOME_SETTING=""
manage.py
会将SOME_SETTING
设置为theValue
,而不是显式定义的""
是否可以使用三元数a = b if b else d
在python中分配值,而无需重复b
或之前将其分配给速记变量?
如果我们看一下
SOME_VERY_LONG_VAR_NAME = os.environ.get('SOME_VERY_LONG_VAR_NAME') if os.environ.get('SOME_VERY_LONG_VAR_NAME') else 'meh'
能够做类似的事情会更好
SOME_VERY_LONG_VAR_NAME = if os.environ.get('SOME_VERY_LONG_VAR_NAME') else 'meh'
答案 0 :(得分:5)
就像Python的内置映射类dict
一样,os.environ.get
有第二个参数,看来您想要它:
SOME_SETTING = os.environ.get('SOME_SETTING', "theValue")
这与
相同try:
SOME_SETTING = os.environ['SOME_SETTING']
except KeyError:
SOME_SETTING = "theValue"
答案 1 :(得分:2)
如果您阅读dict.get()
的文档,则会发现该方法的签名为get(self, key, default=None)
。如果在字典中未找到密钥,则返回default
参数(默认为明智的None
)。因此,您可以使用第二个参数来代替进行错误的布尔测试:
SOME_SETTING = os.environ.get('SOME_SETTING', "theValue")