Flask-API für interne Objekte
Flask bietet mehrere interne Low-Level-Objekte für den Zugriff auf den aktiven Anwendungskontext und den Blueprint-Registrierungsstatus. Die meisten Anwendungen müssen sie nicht direkt verwenden.
AppContext Anwendungskontext
| Methoden/Attribute | Beschreibung |
|---|---|
| AppContext(app) | Eine Anwendungskontext-Instanz erstellen. Wird normalerweise nicht manuell erstellt; app.app_context() verwenden |
| push() | Auf den Kontextstapel legen. Proxys wie current_app und g auf diesen Kontext zeigen lassen. |
| pop(error=None) | Vom Kontextstapel entfernen. Teardown-Callbacks ausführen. error ist das unbehandelte Ausnahmeobjekt. |
| app | Die mit diesem Kontext verknüpfte Flask-Anwendung. |
| g | Das g-Objekt dieses Kontexts (eine _AppCtxGlobals-Instanz) |
| url_adapter | URL-Adapter (MapAdapter), wird zum Erstellen von URLs verwendet |
| request | Das aktuelle Anfrageobjekt (Request). Nur im Anfragekontext verfügbar. |
| session | Das aktuelle Session-Objekt. Nur im Anfragekontext verfügbar. |
app_ctx-Proxy
| Eigenschaft | Beschreibung |
|---|---|
| flask.globals.app_ctx | Ein Proxy, der auf das aktuell aktive AppContext zeigt. Für den internen Gebrauch; in den meisten Fällen sind current_app und g ausreichend. |
BlueprintSetupState
Das Zustandsobjekt für die Blueprint-Registrierung, verfügbar im record-Callback.
| Eigenschaft | Beschreibung |
|---|---|
| app | Die Flask-Anwendung, bei der das Blueprint registriert ist |
| blueprint | Die registrierte Blueprint-Instanz |
| url_prefix | Das URL-Präfix des Blueprints |
| subdomain | Die Subdomain des Blueprints |
| url_defaults | Die URL-Standardwerte des Blueprints |
| options | Zusätzliche Optionen, die beim Registrieren des Blueprints übergeben werden |
Veralteter RequestContext
Seit Flask 3.2,RequestContextwurde inAppContextzusammengeführt. Verwandt:request_ctxProxys wurden ebenfalls inapp_ctxzusammengeführt. Der alte Name wird in Flask 4.0 entfernt.
Codebeispiele
Beispiel
from flask import Flask
from flask.ctx import AppContext
app = Flask(__name__)
# Anwendungskontext manuell verwalten
ctx = app.app_context()
ctx.push()
# current_app und g sind jetzt verfügbar
from flask import current_app, g
g.user = "example"
# Operationen ausführen...
ctx.pop() # Teardown-Callback auslösen, g wird aufgeräumt
# Ansatz mit with-Anweisung (empfohlen)
with app.app_context():
g.temp_data = 42
# Automatisch pop nach Verlassen der with-Anweisung
from flask.ctx import AppContext
app = Flask(__name__)
# Anwendungskontext manuell verwalten
ctx = app.app_context()
ctx.push()
# current_app und g sind jetzt verfügbar
from flask import current_app, g
g.user = "example"
# Operationen ausführen...
ctx.pop() # Teardown-Callback auslösen, g wird aufgeräumt
# Ansatz mit with-Anweisung (empfohlen)
with app.app_context():
g.temp_data = 42
# Automatisch pop nach Verlassen der with-Anweisung