在heroku和本地部署中的Django应用程序

时间:2014-04-19 11:27:54

标签: python django heroku

我有一个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': '',  
        }
    }

1 个答案:

答案 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几乎可以替换为任何内容。