Flask配置文件 - 'DEBUG = True'什么都不做

Alo*_*onP 6 python debugging flask

我在一个名为"MyApp"的软件包中构建了一个大型烧瓶应用程序(完全如下所示:http://flask.pocoo.org/docs/0.12/patterns/packages/)

根据Flask文档,调试模式应启用以下功能:

  1. 它激活调试器
  2. 它激活自动重新加载器
  3. 它启用Flask应用程序上的调试模式.

一开始我用以下命令运行我的烧瓶应用程序,一切都运行良好:

export FLASK_APP=MyApp
export FLASK_DEBUG=1 
flask run
Run Code Online (Sandbox Code Playgroud)

然后我读到了设置配置系统的正确方法(包括调试模式).所以我创建了以下config.py文件:

class Config(object):
    DEBUG = False
    ...

class ProductionConfig(Config):
    ...

class DevelopmentConfig(Config):
    DEVELOPMENT = True
    DEBUG = True
    ...

CONFIGS = {
    "development": DevelopmentConfig,
    "production": ProductionConfig,
    "default": DevelopmentConfig
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序__init__.py文件中,我写道:

app = Flask(__name__)
config_name = os.getenv('FLASK_CONFIGURATION', 'default')
app.config.from_object(CONFIGS[config_name])
Run Code Online (Sandbox Code Playgroud)

现在,要运行应用程序,我输入一个新命令:

export FLASK_APP=MyApp
export FLASK_CONFIGURATION=development 
flask run
Run Code Online (Sandbox Code Playgroud)

不幸的是,这次调试模式根本没有激活..

没有激活调试器或自动重新加载器.唯一改变的app.debug是现在等于True.

我不明白..它看起来DEBUG = TRUE不能正常工作.

你知道为什么会这样吗?

dav*_*ism 10

使用调试器运行不同于设置DEBUG配置。你必须两者都做。在开发模式下运行服务器会自动设置配置。通常,您应该依赖它而不是直接设置配置。

“正确的方式来进行配置”你读的是A)只是另一种方式,而不是“正确”的方式,和b)只设置配置,而不是FLASK_ENVFLASK_DEBUG环境变量,这是控制服务器的调试模式。

设置环境变量FLASK_ENV=development告诉flask run用调试器和重新加载器包装应用程序。(app.run(debug=True)执行相同但不能设置FLASK_ENV,它只有一个环境变量。flask run现在首选该命令)。app.debug在 Flask 应用程序中切换一些内部行为,例如将错误传递给启用了开发模式的交互式调试器。