Flask-Blueprint-Objekt-API

Blueprint wird verwendet, um eine Anwendung in wiederverwendbare Module aufzuteilen. Jeder Blueprint kann eigene Routen, Vorlagen, statische Dateien und Hooks haben.

Erstellungsmethode:

bp = Blueprint("auth", __name__)

Konstruktorparameter

Parameter Type Standardwert Beschreibung
name str Erforderlich Blueprint-Name, der als Endpunktpräfix in url_for verwendet wird
import_name str Erforderlich Der Modulname, in dem sich der Blueprint befindet, wird verwendet, um Ressourcen zu finden. Normalerweise wird __name__ übergeben.
static_folder str Keine Ordner für statische Dateien des Blueprints
static_url_path str Keine Der URL-Pfad, unter dem statische Dateien bereitgestellt werden.
template_folder str Keine Vorlagenordner des Blueprints
url_prefix str Keine Ein gemeinsames Präfix für alle Routen im Blueprint, z. B. "/auth".
subdomain str Keine Subdomain, die von Blueprint-Routen abgeglichen wird
url_defaults dict Keine Standard-URL-Parameter für Blueprint-Routen
root_path str Keine Blueprint-Stammpfad, normalerweise automatisch erkannt
cli_group str Keine Der Name der CLI-Befehlsgruppe. Verwendet standardmäßig den Blueprint-Namen.

Kernattribute

Eigenschaft Type Beschreibung
name str Blueprint-Name, der nach der Registrierung als Endpunkt-Präfix verwendet wird
cli AppGroup Die Blueprint-spezifische CLI-Befehlsgruppe, in der benutzerdefinierte Befehle hinzugefügt werden können.
has_static_folder bool Ob ein statischer Ordner konfiguriert ist

Routenmethoden

Die Verwendung von Blueprints ist dieselbe wie bei einer Flask-Anwendung, außerappErsetzen durchbp:

Methoden Beschreibung
route(rule, **options) Dekorator, der eine URL an eine View-Funktion bindet.
get / post / put / delete / patch(rule, **options) Shortcut-Dekoratoren für HTTP-Methoden
add_url_rule(rule, endpoint, view_func, **options) Programmgesteuertes Hinzufügen von URL-Regeln

Hook-Dekorator

Die Hooks des Blueprints wirken sich nur auf Routen innerhalb des Blueprints aus:

Methoden Beschreibung
before_request Vor allen Anfragen innerhalb des Blueprints ausführen
after_request Nach der Anfrageantwort innerhalb des Blueprints ausführen
teardown_request Ausführen, wenn der Anfragekontext innerhalb des Blueprints zerstört wird
errorhandler(code_or_exception) Fehlerhandler innerhalb des Blueprints
url_value_preprocessor URL-Wert-Vorverarbeiter innerhalb des Blueprints
url_defaults Standard-URL-Parameter innerhalb des Blueprints
template_filter / template_test / template_global Blueprint-Vorlagenfilter / Tests / globale Funktionen.

Blueprint-spezifische Methoden

Methoden Beschreibung
register(app, options) Registriert das Blueprint bei der Flask-Anwendung. Wird intern von app.register_blueprint() aufgerufen
record(func) Registriert eine Callback-Funktion, die aufgerufen wird, wenn das Blueprint bei der Anwendung registriert wird
record_once(func) Wie record, wird jedoch nur einmal ausgeführt, wenn das Blueprint mehrmals registriert wird
make_setup_state(app, options) Erstellt ein Zustandsobjekt für die Blueprint-Registrierung
send_static_file(filename) Sendet eine Datei aus dem statischen Ordner des Blueprints
open_resource(resource, mode="rb") Öffnet eine Ressourcendatei unter dem Stammpfad des Blueprints

Optionsparameter beim Registrieren des Blueprints

Rufen Sieapp.register_blueprint(bp, **options) auf.Beim Aufruf können Sie übergeben:

Parameter Beschreibung
url_prefix URL-Präfix des Blueprints überschreiben
subdomain Subdomain des Blueprints überschreiben
url_defaults URL-Standardwerte des Blueprints überschreiben
name Blueprint umbenennen (derselbe Blueprint kann mehrmals registriert werden, jedes Mal mit einem anderen Namen)

Codebeispiele

Beispiel

from flask import Blueprint, render_template

# Blueprint erstellen
bp = Blueprint("blog", __name__,
               url_prefix="/blog",
               template_folder="templates",
               static_folder="static")

# Routen registrieren
@bp.route("/")
def index():
    return render_template("blog/index.html")

@bp.route("/<int:post_id>")
def show(post_id):
    return f"Beitrag {post_id} anzeigen"

# Blueprint-Hooks
@bp.before_request
def check_login():
    # Gilt nur für /blog/*-Routen
    pass

# In der App registrieren
# app.register_blueprint(bp)
Weitere Erweiterungen