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