我有一个django应用程序,我的settings.py文件中包含以下if else块
当应用程序在heroku中运行时, if
块正在执行,当应用程序在本地系统中时,else
正在执行,请解释这是os.getenviron.get
的内容?以及MBAIR,False
用于什么?
import os
if not bool(os.environ.get('MBAIR', False)):
DEBUG = True
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'rsdfmsfgjsdk_sdfhsdfh'
'USER': 'sdfhsdfhsdf',
'PASSWORD': 'sdhsdfhsdhgfsdf',
'HOST': 'localhost',
'PORT': '',
}
}
答案 0 :(得分:2)
os.environ.get('MBAIR', False)
搜索名为MBAIR的环境变量。如果它不存在,则返回False。
因此,当您使用该if语句时,您正在搜索一个环境变量,您假设仅在heroku服务器上设置。如果找到,则将DEBUG设置为FALSE,然后使用dj_database_url.config创建具有以下参数的数据库配置字典:
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
否则它使用您手动定义的数据库设置。
编辑:你可以这样试试:
>>> import os
>>> os.environ['testvariable'] = "dookie"
>>> os.environ.get('testvariable', False)
'dookie'
>>> os.environ.get('MBAIR', False)
False
>>> os.environ.get('MBAIR', "Hooha")
'Hooha'
此外,False
几乎可以替换为任何内容。