Flask 使用类组织配置详解

白榆
白榆
发布时间:2026-10-15| 4人浏览过
原创

本文介绍在 Flask 项目中如何利用 Python 类来组织和管理不同环境的配置。通过定义基类与继承类,结合环境变量动态加载配置,实现开发、测试和生产环境的灵活切换。文章提供了完整的代码示例,展示如何从类、JSON 或 py 文件加载配置,帮助开发者构建更健壮的应用配置体系。

Flask 多环境配置概述

在实际项目开发中,通常涉及开发、测试和生产三种环境,各环境所需的配置组合存在差异。为了便于切换配置,可以为不同环境分别创建独立的配置文件。然而,更为便捷的做法是在单一配置文件中利用 Python 类来集中管理多套不同类别的配置方案。

以下展示一个典型的应用配置文件 settings.py,该文件包含一个基础配置类 BaseConfig,

此外还定义了针对特定环境的配置类:

  • 开发环境配置类 DevelopConfig
  • 测试环境配置类 TestCofig
  • 生产环境配置类 ProductConfig

上述特定配置类均继承自基础配置类。

配置类设计与实现


import logging

import os

class BaseConfig(object): 

    DEBUG = True

    SECRET_KEY = "qwertyuiop"

    SQLALCHEMY_DATABASE_URI = "mysql://username:password@192.168.1.89:3306/app_db"

    SQLALCHEMY_TRACK_MODIFICATIONS = False

    REDIS_URL = "redis://:password@192.168.1.89:6379/0"

    LEVEL_NAME = logging.DEBUG

class DevelopConfig(BaseConfig):

    pass

class TestConfig(BaseConfig):

    TESTING = True

    SQLALCHEMY_DATABASE_URI = "mysql://username:password@192.168.1.123:3306/app_db"

class ProductConfig(BaseConfig):

    DEBUG = False

    LEVEL_NAME = logging.ERROR

    SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "mysql://username:password@**.***.*.**:3306/app_db")

config_dict = {

    "develop": DevelopConfig,

    "product": ProductConfig,

    "test": TestConfig

}

在代码实现中,首先定义了基础配置类 BaseConfig 并初始化了部分默认配置信息。随后,针对不同环境创建继承自 BaseConfig 的子类,并重新设定特定的配置参数。例如数据库地址 url,测试环境与开发环境的地址不同;而生产环境则优先从环境变量中获取数据库地址,若未设置则使用默认值。

接着,构建一个字典用于存储配置名称与对应配置类的映射关系,这相当于提供了配置信息的统一访问入口,允许根据指定的配置名称获取相应的配置类。

完成配置文件编写后,在应用主程序中创建 Flask 实例 app 时,即可调用 app.config.from_object() 方法来加载配置。

配置加载与使用示例

具体示例如下:


from settings import config_dict 

app = Flask(__name__)

config_name = os.getenv('CONFIG_NAME', 'develop')

app.config.from_object(config_dict[config_name])

首先从配置文件中导入配置名称与类的映射字典 config_dict,并从环境变量 CONFIG_NAME 中读取配置名称。随后通过 app.config.from_object() 方法加载指定的配置信息。若未读取到 CONFIG_NAME,则默认使用 develop 环境,其对应的配置类为 DevelopmentConfig。

其他配置加载方式

Flask 支持多种配置加载方式。除了上述从 Python 类中加载的方式外,还支持从 JSON 文件加载、从 py 文件加载等。app.config 类提供了多种方法来加载不同格式的配置文件,具有较高的灵活性。

至此,关于 Flask    使用类组织配置的详细介绍完毕。如需了解更多相关 Flask 配置内容,请搜索本站过往文章或继续浏览后续相关文章,感谢支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。