python - Flask 应用程序未正确使用配置文件设置

标签 python flask

我正在按照指南 here尝试为我的 flask 应用程序的设置创建一个 config.py 文件,但它不起作用。

from flask import Flask

# creates the application
def create_app():

    app = Flask(__name__)
    app.config.from_object('instance.config.DevelopmentConfig')

    # home
    @app.route('/')
    def home():
        return str(app.config['DEBUG']) # displays 'False'
        # return str(app.config['SECRET_KEY']) -- displays 'dev'

    return app

我的 instance/config.py 文件

class DevelopmentConfig(object):
    ENV = 'development'
    DEBUG = True
    SECRET_KEY = 'dev'

当我执行 flask run 时,它会在关闭调试的情况下在生产环境中运行服务器。我没有使用 export FLASK_ENV 因为我的印象是当你有一个 config.py 文件时不需要它。

我的假设错了吗?为什么它正确记录了 app.config['SECRET_KEY'] 而不是 DEBUG 模式?

最佳答案

根据文档here您不应该通过代码设置 Debug 和 ENV,否则某些扩展程序可能会误解并做出意外行为。

您仍然可以通过代码设置它,它可能会使用类似“python main.py”的东西,但再次根据文档...

While it is possible to set ENV and DEBUG in your config or code, this is strongly discouraged. They can’t be read early by the flask command, and some systems or extensions may have already configured themselves based on a previous value.

正确的方法是使用您的终端

Linux:

export FLASK_ENV=development
flask run

window :

set FLASK_ENV=development
flask run

您的 config.py 文件应该与您的数据库和 API key 更加相关。

关于python - Flask 应用程序未正确使用配置文件设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451154/

相关文章:

python - 具有可选返回值的 Python 函数中的惰性存储和代码执行

javascript - Django JavaScript 下拉菜单

python - Flask-SocketIO 不能在 Apache/WSGI 上工作

python - 如何在AWS ECS上的Flask/MongoDB中设置环境变量?

python - Stripe 在费用下降时创造客户

python - Django 模型 : Inherit from variable abstract base class

python - 修改 Celery 节拍计划搁置数据库

python - text.on_change 对 Bokeh TextInput 没有响应

python - 如何使用 MongoEngine 根据特定条件选择多个对象?

python - Flask 登录 get_id 方法给出 Peewee 错误