如何在配置对象中使用"FLASK_ENV"



以下是Flask文档中的开发/生产示例。无法使用FLASK_ENV配置烧瓶环境吗?

>>> class DevelopmentConfig(Config):
...     FLASK_ENV = "development"
...     DEBUG = True
... 
>>> class ProductionConfig(Config):
...     FLASK_ENV = "production"
...     DEBUG = False
... 
>>> def create_app(config="ProductionConfig"):
...     app = Flask(__name__)
...     app.config.from_object(f"{__name__}.{config}")
...     return app
... 
>>> app = create_app("DevelopmentConfig")  # I CREATE AN APP USING DevelopmentConfig
>>> app.run()
* Serving Flask app '__main__' (lazy loading)
* Environment: production  # WHY IS ENVIRONMENT SET TO PRODUCTION?
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

尽管可以从settings设置ENVDEBUG,但它可能无法按预期工作,因此不推荐使用。

为了可靠地设置环境和调试模式,Flask使用环境变量。

供您参考,环境和调试功能

所以我发现,虽然在外部应该使用FLASK_ENV,但在内部应该只使用ENV

>>> class DevelopmentConfig(Config):
...     ENV = "development"  # USE ENV INSTEAD OF FLASK_ENV
...     DEBUG = True
... 
>>> class ProductionConfig(Config):
...     ENV = "production"  # USE ENV INSTEAD OF FLASK_ENV
...     DEBUG = False
... 
>>> def create_app(config=ProductionConfig):
...     app = Flask(__name__)
...     app.config.from_object(config)
...     return app
... 
>>> app = create_app(DevelopmentConfig)
>>> app.run()
* Serving Flask app '__main__' (lazy loading)
* Environment: development  # NOW IS SET CORRECLY
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

最新更新