API внутренних объектов Flask

Flask предоставляет несколько низкоуровневых внутренних объектов для доступа к активному контексту приложения и состоянию регистрации blueprint. Большинству приложений не нужно использовать их напрямую.


AppContext — контекст приложения

Методы/атрибуты Описание
AppContext(app) Создать экземпляр контекста приложения. Обычно не создаётся вручную; используйте app.app_context()
push() Поместить в стек контекста. Сделать так, чтобы прокси, такие как current_app и g, указывали на этот контекст.
pop(error=None) Извлечь из стека контекста. Выполнить callback-функции завершения. error — объект необработанного исключения.
app Приложение Flask, связанное с этим контекстом.
g Объект g этого контекста (экземпляр _AppCtxGlobals)
url_adapter URL-адаптер (MapAdapter), используемый для построения URL
request Текущий объект запроса (Request). Доступен только в контексте запроса.
session Текущий объект Session. Доступен только в контексте запроса.

прокси app_ctx

Свойство Описание
flask.globals.app_ctx Прокси, указывающий на текущий активный AppContext. Для внутреннего использования; в большинстве случаев достаточно current_app и g.

BlueprintSetupState

Объект состояния для регистрации blueprint, доступный в callback-функции record.

Свойство Описание
app Приложение Flask, в котором зарегистрирован blueprint
blueprint Зарегистрированный экземпляр Blueprint
url_prefix Префикс URL blueprint
subdomain Поддомен blueprint
url_defaults Значения URL по умолчанию для blueprint
options Дополнительные параметры, переданные при регистрации blueprint

Устаревший RequestContext

Начиная с Flask 3.2,RequestContextбыл объединён вAppContext. Связанныйrequest_ctxПрокси также были объединены вapp_ctxСтарое имя будет удалено в Flask 4.0.


Примеры кода

Пример

from flask import Flask
from flask.ctx import AppContext

app = Flask(__name__)

# Ручное управление контекстом приложения
ctx = app.app_context()
ctx.push()
# current_app и g теперь доступны
from flask import current_app, g
g.user = "example"
# Выполняем операции...
ctx.pop()  # Запустить callback teardown, g очищается

# подход с оператором with (рекомендуется)
with app.app_context():
    g.temp_data = 42
# Автоматическое извлечение после выхода из with
Другие расширения