API класса конфигурации Flask Config

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": "..."}
Другие расширения