API de objetos internos de Flask
Flask proporciona varios objetos internos de bajo nivel para acceder al contexto de aplicación activo y al estado de registro de los blueprints. La mayoría de las aplicaciones no necesitan usarlos directamente.
AppContext: contexto de aplicación
| Métodos/atributos | Descripción |
|---|---|
| AppContext(app) | Crea una instancia de contexto de aplicación. Normalmente no se crea manualmente; use app.app_context() |
| push() | Empuja a la pila de contexto. Hace que proxies como current_app, g, etc. apunten a este contexto |
| pop(error=None) | Extrae de la pila de contexto. Ejecuta las devoluciones de llamada de teardown. error representa el objeto de excepción no controlada |
| app | La aplicación Flask asociada con este contexto |
| g | El objeto g de este contexto (instancia de _AppCtxGlobals) |
| url_adapter | Adaptador de URL (MapAdapter), utilizado para la construcción de URL |
| request | Objeto de solicitud actual (Request). Solo disponible en el contexto de solicitud |
| session | Objeto Session actual. Solo disponible en el contexto de solicitud |
Proxy app_ctx
| Atributos | Descripción |
|---|---|
| flask.globals.app_ctx | Proxy que apunta al AppContext activo actual. Para uso interno; en la mayoría de los casos basta con current_app y g |
BlueprintSetupState
Objeto de estado durante el registro del blueprint, disponible en la devolución de llamada record.
| Atributos | Descripción |
|---|---|
| app | La aplicación Flask en la que se registra el blueprint |
| blueprint | La instancia de Blueprint registrada |
| url_prefix | El prefijo de la URL del blueprint |
| subdomain | El subdominio del blueprint |
| url_defaults | Los valores predeterminados de la URL del blueprint |
| options | Opciones adicionales pasadas al registrar el blueprint |
RequestContext obsoleto
Desde Flask 3.2,RequestContextse ha fusionado enAppContext. El relacionadorequest_ctxproxy también se ha fusionado enapp_ctx. Los nombres antiguos se eliminarán en Flask 4.0.
Ejemplo de código
Ejemplo
from flask import Flask
from flask.ctx import AppContext
app = Flask(__name__)
# Gestión manual del contexto de aplicación
ctx = app.app_context()
ctx.push()
# current_app y g ahora están disponibles
from flask import current_app, g
g.user = "ejemplo"
# Realizar operaciones...
ctx.pop() # Se activa la devolución de llamada de teardown, g se limpia
# Método con sentencia with (recomendado)
with app.app_context():
g.temp_data = 42
# Se hace pop automáticamente al salir de with
from flask.ctx import AppContext
app = Flask(__name__)
# Gestión manual del contexto de aplicación
ctx = app.app_context()
ctx.push()
# current_app y g ahora están disponibles
from flask import current_app, g
g.user = "ejemplo"
# Realizar operaciones...
ctx.pop() # Se activa la devolución de llamada de teardown, g se limpia
# Método con sentencia with (recomendado)
with app.app_context():
g.temp_data = 42
# Se hace pop automáticamente al salir de with