简介
在本实验中,你将学习如何在 Flask 应用程序中处理配置。配置使你能够根据不同的环境更改应用程序中的设置,例如切换调试模式、设置密钥以及其他特定于环境的变量。
注意:你需要自己创建代码文件并在环境中运行它。你可以在 Web 5000 上预览 Flask 服务状态。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在本实验中,你将学习如何在 Flask 应用程序中处理配置。配置使你能够根据不同的环境更改应用程序中的设置,例如切换调试模式、设置密钥以及其他特定于环境的变量。
注意:你需要自己创建代码文件并在环境中运行它。你可以在 Web 5000 上预览 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
模块加载配置。现在,DEBUG
和 SECRET_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 应用的一个重要方面。