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": "..."}
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": "..."}