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
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