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

Dar*_*res 7 python flask

我正在按照此处的指南尝试为我的 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
Run Code Online (Sandbox Code Playgroud)

我的instance/config.py文件

class DevelopmentConfig(object):
    ENV = 'development'
    DEBUG = True
    SECRET_KEY = 'dev'
Run Code Online (Sandbox Code Playgroud)

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

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

小智 4

根据此处的文档,您不应通过代码设置 Debug 和 ENV,否则某些扩展可能会误解这一点并出现意外行为。

\n

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

\n
\n

虽然可以在配置或代码中设置 ENV 和 DEBUG,但强烈建议不要这样做。它们不能被flask命令提前读取xe2x80x99,并且某些系统或扩展可能已经根据先前的值进行了自身配置。

\n
\n

正确方法是使用终端

\n

Linux:

\n
export FLASK_ENV=development\nflask run\n
Run Code Online (Sandbox Code Playgroud)\n

视窗:

\n
set FLASK_ENV=development\nflask run\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

  • 是的,这是很久以前的事了,当时我还是 Flask 的新手,我还没有正确理解每个配置的用途。这是正确的答案,也是我最终所做的! (2认同)