Le moyen le plus simple serait de créer une fonction qui prendrait une instance d'une fonction Flask
et enregistre tous vos bleus dessus en une seule fois. Quelque chose comme ça :
# sub_site/__init__.py
from .sub_page1 import bp as sb1bp
from .sub_page2 import bp as sb2bp
# ... etc. ...
def register_sub_site(app, url_prefix="/sub-site"):
app.register_blueprint(sb1bp, url_prefix=url_prefix)
app.register_blueprint(sb2bp, url_prefix=url_prefix)
# ... etc. ...
# sub_site/sub_page1.py
from flask import Blueprint
bp = Blueprint("sub_page1", __name__)
@bp.route("/")
def sub_page1_index():
pass
Alternativement, vous pouvez utiliser quelque chose comme HipPocket
's autoload
fonction (divulgation complète : j'ai écrit HipPocket
) pour simplifier la gestion des importations :
# sub_site/__init__.py
from hip_pocket.tasks import autoload
def register_sub_site(app,
url_prefix="/sub-site",
base_import_name="sub_site"):
autoload(app, base_import_name, blueprint_name="bp")
Cependant, dans l'état actuel des choses, vous ne pourriez pas utiliser la même structure que dans l'exemple n°1 (HipPocket suppose que vous utilisez des packages pour chaque Blueprint). Au lieu de cela, votre mise en page ressemblerait à ceci :
# sub_site/sub_page1/__init__.py
# This space intentionally left blank
# sub_site/sub_page1/routes.py
from flask import Blueprint
bp = Blueprint("sub_page1", __name__)
@bp.route("/")
def sub_page1_index():
pass