Flask如何读取配置信息

目录

[一、使用 app.config 读取配置](#一、使用 app.config 读取配置)

二、设置配置的几种方式

[1. 直接设置](#1. 直接设置)

[2. 从 Python 文件加载](#2. 从 Python 文件加载)

[3. 从环境变量加载](#3. 从环境变量加载)

[4. 从字典加载](#4. 从字典加载)

[5. 从 .env 文件加载(推荐开发环境用)](#5. 从 .env 文件加载(推荐开发环境用))

三、读取配置值

四、最佳实践建议


在 Flask 中读取配置信息有几种常见方式,下面是详细的说明和示例:

一、使用 app.config 读取配置

Flask 提供了 app.config 对象来管理配置信息,支持从多种来源加载配置。

二、设置配置的几种方式

1. 直接设置
python 复制代码
from flask import Flask

app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'
2. 从 Python 文件加载

创建一个 config.py 文件:

python 复制代码
DEBUG = True
SECRET_KEY = 'mysecretkey'
DATABASE_URI = 'sqlite:///example.db'

在 Flask 应用中加载:

python 复制代码
app.config.from_pyfile('config.py')
3. 从环境变量加载
python 复制代码
import os
app.config.from_envvar('MYAPP_CONFIG')  # 环境变量中包含配置文件路径

设置环境变量:

复制代码
export MYAPP_CONFIG=/path/to/config.py
4. 从字典加载
python 复制代码
config_dict = {
    'DEBUG': True,
    'SECRET_KEY': 'mysecretkey'
}
app.config.from_mapping(config_dict)
5. 从 .env 文件加载(推荐开发环境用)

使用 python-dotenv:

复制代码
# .env 文件内容
DEBUG=True
SECRET_KEY=mysecretkey

安装库并在 Flask 中启用:

复制代码
pip install python-dotenv

Flask 自动加载 .env(如果你使用 Flask CLI)或手动加载:

python 复制代码
from dotenv import load_dotenv
load_dotenv()
import os
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')

三、读取配置值

python 复制代码
debug_mode = app.config.get('DEBUG', False)
secret = app.config['SECRET_KEY']

四、最佳实践建议

  • 把敏感配置(如数据库密码、密钥)放在 .env 或环境变量中。
  • 使用 config.py 管理分环境配置,如 config/dev.py, config/prod.py。
  • 可定义配置类:
python 复制代码
class Config:
    DEBUG = False
    SECRET_KEY = 'defaultsecret'

class DevConfig(Config):
    DEBUG = True
    DATABASE_URI = 'sqlite:///dev.db'

app.config.from_object(DevConfig)
相关推荐
专注API从业者23 分钟前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋30 分钟前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落1 小时前
Python学习之装饰器
开发语言·python·学习
XiaoMu_0012 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
THMAIL2 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
我没想到原来他们都是一堆坏人3 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
总有刁民想爱朕ha4 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
人衣aoa4 小时前
Python编程基础(八) | 类
开发语言·python
大模型真好玩5 小时前
深入浅出LangGraph AI Agent智能体开发教程(四)—LangGraph全生态开发工具使用与智能体部署
人工智能·python·mcp
百锦再5 小时前
脚本语言的大浪淘沙或百花争艳
java·开发语言·人工智能·python·django·virtualenv·pygame