我的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
中明确定义。我做错了什么?
答案 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