API de l'objet Blueprint de Flask

Blueprint est utilisé pour diviser une application en modules réutilisables. Chaque blueprint peut avoir ses propres routes, modèles, fichiers statiques et hooks.

Méthode de création :

bp = Blueprint("auth", __name__)

Paramètres du constructeur

Paramètre Type Valeur par défaut Description
name str Requis Nom du blueprint, utilisé pour le préfixe du point de terminaison dans url_for
import str Requis Le nom du module où réside le blueprint, utilisé pour localiser les ressources. On passe généralement __name__.
static_folder str Aucune Dossier des fichiers statiques du blueprint
static_url_path str Aucune Le chemin URL auquel les fichiers statiques sont exposés.
template_folder str Aucune Dossier des modèles du blueprint
url_prefix str Aucune Un préfixe commun pour toutes les routes du blueprint, par ex., "/auth".
subdomain str Aucune Sous-domaine mis en correspondance par les routes du blueprint
url_defaults dict Aucune Paramètres URL par défaut pour les routes du blueprint
root_path str Aucune Chemin racine du blueprint, généralement découvert automatiquement
cli_group str Aucune Le nom du groupe de commandes CLI. Utilise le nom du blueprint par défaut.

Attributs principaux

Propriété Type Description
name str Nom du blueprint, utilisé comme préfixe de point de terminaison après enregistrement
cli AppGroup Le groupe de commandes CLI spécifique au blueprint, où des commandes personnalisées peuvent être ajoutées.
has_static_folder bool Indique si un dossier statique est configuré

Méthodes de route

L'utilisation des blueprints est identique à celle d'une application Flask, saufappRemplacer parbp:

Méthodes Description
route(rule, **options) Décorateur qui lie une URL à une fonction de vue.
get / post / put / delete / patch(rule, **options) Décorateurs raccourcis pour les méthodes HTTP
add_url_rule(rule, endpoint, view_func, **options) Ajout de règles d'URL par programmation

Décorateur de hook

Les hooks du blueprint n'affectent que les routes au sein du blueprint :

Méthodes Description
before_request Exécuter avant toutes les requêtes au sein du blueprint
after_request Exécuter après la réponse à la requête au sein du blueprint
teardown_request Exécuter lorsque le contexte de la requête est détruit au sein du blueprint
errorhandler(code_or_exception) Gestionnaires d'erreurs au sein du blueprint
url_value_preprocessor Préprocesseurs de valeurs d'URL au sein du blueprint
url_defaults Paramètres d'URL par défaut au sein du blueprint
template_filter / template_test / template_global Filtres / tests / fonctions globales de template Blueprint.

Méthodes spécifiques à Blueprint

Méthodes Description
register(app, options) Enregistre le blueprint sur l'application Flask. Appelé en interne par app.register_blueprint()
record(func) Enregistre une fonction de rappel qui est appelée lorsque le blueprint est enregistré auprès de l'application
record_once(func) Identique à record, mais exécuté une seule fois lorsque le blueprint est enregistré plusieurs fois
make_setup_state(app, options) Crée un objet d'état d'enregistrement de blueprint
send_static_file(filename) Envoie un fichier depuis le dossier statique du blueprint
open_resource(resource, mode="rb") Ouvre un fichier de ressource sous le chemin racine du blueprint

Paramètres d'options lors de l'enregistrement du blueprint

Appelapp.register_blueprint(bp, **options)Lors de l'appel, vous pouvez passer :

Paramètre Description
url_prefix Remplacer le préfixe d'URL du blueprint
subdomain Remplacer le sous-domaine du blueprint
url_defaults Remplacer les valeurs par défaut d'URL du blueprint
name Renommer le blueprint (le même blueprint peut être enregistré plusieurs fois, chaque fois avec un nom différent)

Exemples de code

Exemple

from flask import Blueprint, render_template

# Créer un blueprint
bp = Blueprint("blog", __name__,
               url_prefix="/blog",
               template_folder="templates",
               static_folder="static")

# Enregistrer les routes
@bp.route("/")
def index():
    return render_template("blog/index.html")

@bp.route("/<int:post_id>")
def show(post_id):
    return f"Afficher l'article {post_id}"

# Hooks de Blueprint
@bp.before_request
def check_login():
    # S'applique uniquement aux routes /blog/*
    pass

# Enregistrer dans l'application
# app.register_blueprint(bp)
autres extensions