Flask
最も簡単な方法は、アプリケーションのインスタンスを受け取り、すべてのブループリントを一度に登録する関数を作成することです。このようなもの:
# 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
HipPocket
または、のautoload
関数(完全な開示: 私が書いた) のようなものを使用してHipPocket
、インポート処理を簡素化することもできます。
# 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")
ただし、現状では、例 #1 と同じ構造を使用することはできません (HipPocket は、各ブループリントにパッケージを使用していると想定しています)。代わりに、レイアウトは次のようになります。
# 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