我正在尝试将一些检查引入我的Django 1.10项目的settings.py
文件中,作为采用django-environ
包并遵守12-Factor类型配置的一部分。
在这样做时,我注意到每当我在settings.py
中引入布尔检查时,无论操作数是True还是False,都会处理if
语句中的块。
示例:
import environ
root = environ.Path(__file__) - 2 # three folder back (/a/b/c/ - 3 = /)
env = environ.Env(DEBUG=(bool, False),) # set default values and casting
environ.Env.read_env() # reading .env file
DEBUG = env('DEBUG') # False if not in os.environ
TEMPLATE_DEBUG = DEBUG
CLOUD = env('CLOUD', default=False)
ALLOWED_HOSTS = []
if env('CLOUD') and env('ALLOWED_HOST'):
ALLOWED_HOSTS.append(env('ALLOWED_HOST', default=''))
ALLOWED_HOSTS.append(env('ALLOWED_HOST_ALIAS', default=''))
始终处理最后if
语句中的代码。
我的问题是这种行为是否是典型的Django的settings
文件?它为什么要这样做?另外,基于从配置文件加载的值(或不存在)来实现某些条件检查的最佳方法是什么?