教程 / Python3 / Flask Config API

Flask Config API

Flask Config 配置类 API Config 是一个字典子类,用于管理 Flask 应用的所有配置项。 通过 app.config 访问,支持从多种来源加载配置。 Config 类方法 方法 签名 说明 fro

Config 是一个字典子类,用于管理 Flask 应用的所有配置项。

通过 app.config 访问,支持从多种来源加载配置。


Config 类方法

方法 签名 说明
from_pyfile (filename, silent=False) 从 Python 文件加载配置。silent=True 时忽略文件不存在错误
from_object (obj) 从对象(模块、类、字符串导入路径)加载配置。只加载大写属性
from_envvar (variable_name, silent=False) 从环境变量指向的文件加载配置。等价于 from_pyfile(os.environ[var])
from_prefixed_env (prefix="FLASK", *, loads=json.loads) 从环境变量加载。读取 FLASK_ 前缀的变量,去掉前缀后设为配置
from_file (filename, load, silent=False, text=True) 从任意格式文件加载。load 为解析函数(如 json.load、tomllib.load)
from_mapping (mapping=None, **kwargs) 从映射对象加载配置。可选**kwargs键值对。只加载大写键
get_namespace (namespace, lowercase=True, trim_namespace=True) 获取指定前缀的配置子集。如 get_namespace("DB_") 获取所有数据库配置

加载方式对比

加载方法 适用场景 示例
from_pyfile 配置文件为 Python 格式 app.config.from_pyfile("config.py")
from_object 使用类或模块组织配置,区分环境 app.config.from_object("myapp.config.ProductionConfig")
from_prefixed_env 12-Factor App,环境变量配置 app.config.from_prefixed_env()
from_file JSON、TOML 等非 Python 格式 app.config.from_file("config.json", load=json.load)
get_namespace 提取配置子集传给库的构造函数 db_config = app.config.get_namespace("DB_")

配置键命名规则

配置键名 必须全部大写。这是 Flask 的约定,from_object、from_mapping、from_prefixed_env 等方法都会自动忽略小写键。


代码示例

实例

from flask import Flask

app = Flask(__name__)

# 方式1:从 Python 文件加载
app.config.from_pyfile("config.py")

# 方式2:从环境变量加载(读取 FLASK_ 前缀)
app.config.from_prefixed_env()

# 方式3:直接设置
app.config["MY_SETTING"] = "value"

# 方式4:从 JSON 加载
import json
app.config.from_file("config.json", load=json.load)

# 方式5:获取命名空间配置
# 假设有 DB_HOST、DB_PORT、DB_NAME 等配置
db_config = app.config.get_namespace("DB_")
# db_config = {"host": "...", "port": ..., "name": "..."}