Django与环境字符串的不稳定行为

时间:2017-05-26 21:52:27

标签: python django

我的settings.py有:

DEBUG = os.environ.get('MY_VAR', True)
print(DEBUG)

我通过以下方式之一从命令行设置MY_VAR,无论哪个,结果都是一样的:

export MY_VAR='False' 
export MY_VAR=False

当我启动服务器时......我输出了:

False
False
Performing system checks...

System check identified no issues (0 silenced).
May 26, 2017 - 17:50:44
Django version 1.11, using settings 'my_app.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

但是,应用程序将始终以调试模式运行。我知道,由于黄色错误屏幕,我在底部显示应用程序处于调试模式。

它处于调试模式除非我明确定义:

DEBUG = False

我甚至不知道如何开始解释这一点。我需要我的应用程序决定是否根据环境字符串在调试模式下运行,而不是在settings.py中明确定义。我做错了什么?

1 个答案:

答案 0 :(得分:1)

os.environ读取会返回一个字符串。您需要使用say a dictionary从字符串中检索相应的布尔值。

dct = {'True': True, 'False': False}
my_var = os.environ.get('MY_VAR')
DEBUG = dct.get(my_var, True) # Turn returned string to boolean