Короткий ответ
Blueprint — это способ сгруппировать связанные маршруты, шаблоны и статику в отдельный модуль, который затем регистрируется в основном приложении через register_blueprint.
Как это работает подробнее
Blueprint создаётся как отдельный объект (Blueprint('name', __name__)), к нему привязываются маршруты через @bp.route(...), как и к обычному app. Сам Blueprint не является приложением — он «встраивается» в реальное Flask-приложение вызовом app.register_blueprint(bp, url_prefix=...).
Пример кода
example.py
# users/routes.py
from flask import Blueprint
bp = Blueprint("users", __name__)
@bp.route("/users/<int:user_id>")
def get_user(user_id):
return {"id": user_id}
# app.py
from flask import Flask
from users.routes import bp as users_bp
app = Flask(__name__)
app.register_blueprint(users_bp, url_prefix="/api")
# Теперь маршрут доступен как GET /api/users/5Что использовать на практике
- Практика. Blueprint удобен для разделения кода на логические модули (например,
auth,users,orders) в проектах среднего и большого размера, вместо того чтобы держать все маршруты в одном файлеapp.py.
Подводные камни
- Риск. Забывают зарегистрировать Blueprint в приложении (
register_blueprint), из-за чего маршруты «не существуют»; дублируют один и тот жеurl_prefixдля разных Blueprint, что приводит к конфликтам маршрутов.