API объекта Blueprint во Flask

Blueprint используется для разделения приложения на повторно используемые модули. Каждый Blueprint может иметь собственные маршруты, шаблоны, статические файлы и хуки.

Способ создания:

bp = Blueprint("auth", __name__)

Параметры конструктора

Параметр Type Значение по умолчанию Описание
name str Обязательный Имя Blueprint, используемое для префикса эндпоинта в url_for
import_name str Обязательный Имя модуля, в котором находится Blueprint, используется для поиска ресурсов. Обычно передаётся __name__.
static_folder str Отсутствует Папка статических файлов Blueprint
static_url_path str Отсутствует URL-путь, по которому доступны статические файлы.
template_folder str Отсутствует Папка шаблонов Blueprint
url_prefix str Отсутствует Общий префикс для всех маршрутов в Blueprint, например, "/auth".
subdomain str Отсутствует Поддомен, сопоставляемый с маршрутами Blueprint
url_defaults dict Отсутствует Параметры URL по умолчанию для маршрутов Blueprint
root_path str Отсутствует Корневой путь Blueprint, обычно определяется автоматически
cli_group str Отсутствует Имя группы CLI-команд. По умолчанию используется имя blueprint.

Основные атрибуты

Свойство Type Описание
name str Имя blueprint, используемое в качестве префикса эндпоинта после регистрации
cli AppGroup Группа CLI-команд, специфичная для blueprint, в которую можно добавлять пользовательские команды.
has_static_folder bool Настроена ли папка статических файлов

Методы маршрута

Использование blueprints такое же, как в приложении Flask, за исключением того, чтоappнужно заменить наbp:

Методы Описание
route(rule, **options) Декоратор, который привязывает URL к функции представления.
get / post / put / delete / patch(rule, **options) Декораторы-сокращения для HTTP-методов
add_url_rule(rule, endpoint, view_func, **options) Программное добавление правил URL

Декоратор хука

Хуки blueprint влияют только на маршруты внутри blueprint:

Методы Описание
before_request Выполняется перед всеми запросами внутри blueprint
after_request Выполняется после ответа на запрос внутри blueprint
teardown_request Выполняется при уничтожении контекста запроса внутри blueprint
errorhandler(code_or_exception) Обработчики ошибок внутри blueprint
url_value_preprocessor Препроцессоры значений URL внутри blueprint
url_defaults Параметры URL по умолчанию внутри blueprint
template_filter / template_test / template_global Фильтры / тесты / глобальные функции шаблонов Blueprint.

Методы, специфичные для Blueprint

Методы Описание
register(app, options) Регистрирует Blueprint в приложении Flask. Вызывается изнутри app.register_blueprint()
record(func) Регистрирует функцию обратного вызова, которая вызывается, когда Blueprint регистрируется в приложении
record_once(func) То же, что и record, но выполняется только один раз, когда Blueprint регистрируется несколько раз
make_setup_state(app, options) Создаёт объект состояния регистрации Blueprint
send_static_file(filename) Отправляет файл из статической папки Blueprint
open_resource(resource, mode="rb") Открывает файл ресурса в корневом пути Blueprint

Параметры options при регистрации blueprint

Вызовapp.register_blueprint(bp, **options)При вызове можно передать:

Параметр Описание
url_prefix Переопределить префикс URL blueprint
subdomain Переопределить поддомен blueprint
url_defaults Переопределить значения по умолчанию URL blueprint
name Переименовать blueprint (один и тот же blueprint можно зарегистрировать несколько раз, каждый раз с другим именем)

Примеры кода

Пример

from flask import Blueprint, render_template

# Создание blueprint
bp = Blueprint("blog", __name__,
               url_prefix="/blog",
               template_folder="templates",
               static_folder="static")

# Зарегистрируйте маршруты
@bp.route("/")
def index():
    return render_template("blog/index.html")

@bp.route("/<int:post_id>")
def show(post_id):
    return f"Показать пост {post_id}"

# Хуки Blueprint
@bp.before_request
def check_login():
    # Применяется только к маршрутам /blog/*
    pass

# Зарегистрировать в приложении
# app.register_blueprint(bp)
Другие расширения