Flask 配置管理

FlaskFlaskBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何在 Flask 应用程序中处理配置。配置使你能够根据不同的环境更改应用程序中的设置,例如切换调试模式、设置密钥以及其他特定于环境的变量。

注意:你需要自己创建代码文件并在环境中运行它。你可以在 Web 5000 上预览 Flask 服务状态。

创建一个 Flask 应用程序

首先,让我们创建一个基本的 Flask 应用程序。创建一个名为 app.py 的文件,并添加以下代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Flask!'

要运行该应用程序,请在终端中执行以下命令:

python app.py

打开你的网页浏览器,访问 http://localhost:5000 以查看 “Hello, Flask!” 消息。

基本配置

现在让我们为 Flask 应用添加一些基本配置。在同一个 app.py 文件中,添加以下代码:

app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'

DEBUG 配置启用调试模式,在开发过程中会提供有用的错误消息。SECRET_KEY 配置用于安全地对会话 cookie 进行签名以及满足其他与安全相关的需求。

要访问配置值,可以使用 app.config 字典。例如,要打印 SECRET_KEY 的值,在 hello 路由中添加以下代码:

@app.route('/')
def hello():
    secret_key = app.config['SECRET_KEY']
    return f'Hello, Flask! Secret Key: {secret_key}'

重启 Flask 应用,然后访问 http://localhost:5000 以查看包含密钥的更新后的消息。

从文件中配置

在代码中硬编码配置值并不理想,尤其是对于敏感信息。Flask 提供了一种从单独文件加载配置的方法。创建一个名为 config.py 的新文件,并添加以下代码:

DEBUG = False
SECRET_KEY ='myothersecretkey'

app.py 文件中,将之前的配置代码替换为以下内容:

app.config.from_object('config')

from_object 方法从 config 模块加载配置。现在,DEBUGSECRET_KEY 值将从 config.py 文件中加载。

重启 Flask 应用,然后访问 http://localhost:5000 以查看包含新配置值的更新后的消息。

基于环境的配置

针对不同的环境(如开发、生产和测试)采用不同的配置是很常见的。Flask 允许你根据环境变量来切换配置。创建一个名为 config_dev.py 的新文件,并添加以下代码:

DEBUG = True
SECRET_KEY = 'devsecretkey'

创建另一个名为 config_prod.py 的文件,并添加以下代码:

DEBUG = False
SECRET_KEY = 'prodsecretkey'

app.py 文件中,将之前的配置代码替换为以下内容:

import os

if os.environ.get('FLASK_ENV') == 'production':
    app.config.from_object('config_prod')
else:
    app.config.from_object('config_dev')

FLASK_ENV 环境变量用于确定环境。如果将其设置为 'production',则会加载生产环境配置;否则,将加载开发环境配置。

FLASK_ENV 环境变量设置为 'production',然后重启 Flask 应用。访问 http://localhost:5000 以查看包含生产环境配置值的更新后的消息。

实例文件夹

Flask 提供了一个实例文件夹,用于存储特定于某个部署的配置文件。这使你能够将特定于部署的配置与代码的其他部分分开。默认情况下,Flask 在与应用程序相同的目录中使用一个名为 instance 的文件夹。

在与 app.py 文件相同的目录中创建一个名为 instance 的新文件夹。在 instance 文件夹中,创建一个名为 config.cfg 的文件,并添加以下代码:

DEBUG = True
SECRET_KEY = 'instancekey'

app.py 文件中,在配置代码之前添加以下代码:

app.instance_path = os.path.abspath(os.path.dirname(__file__))
app.config.from_pyfile('config.cfg')

instance_path 被设置为 instance 文件夹的绝对路径。from_pyfile 方法从实例文件夹中的 config.cfg 文件加载配置。

重启 Flask 应用,然后访问 http://localhost:5000 以查看包含实例配置值的更新后的消息。

总结

在本实验中,你学习了如何在 Flask 应用中处理配置。你学习了如何设置基本配置值、从文件加载配置、根据环境变量切换配置以及使用实例文件夹进行特定于部署的配置。配置是构建健壮且灵活的 Flask 应用的一个重要方面。

您可能感兴趣的其他 Flask 教程