РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
259 of 643 menu

Метод record_once

Метод record_once применяется к объекту Blueprint и позволяет отложить выполнение некоторой функции до момента, когда чертёж будет впервые зарегистрирован в приложении через метод register. Это полезно для операций, которые должны произойти ровно один раз: настройка расширений, регистрация фильтров, инициализация глобальных структур. Первым параметром передаётся функция обратного вызова, которая принимает объект состояния чертежа state. Если один и тот же чертёж регистрируется в нескольких приложениях, функция будет вызвана отдельно для каждого приложения, но только один раз на каждое.

Синтаксис

@bp.record_once def callback(state): ...

Пример

Давайте создадим чертёж и зарегистрируем функцию, которая выполнится один раз при подключении чертежа к приложению:

from flask import Flask, Blueprint bp = Blueprint('bp', __name__) @bp.record_once def init_bp(state): app = state.app app.config['BP_INITIALIZED'] = True print('Blueprint initialized') app = Flask(__name__) app.register_blueprint(bp)

Результат выполнения кода:

"Blueprint initialized"

Пример

Давайте используем record_once для регистрации Jinja-фильтра, который должен быть добавлен только один раз:

from flask import Flask, Blueprint, render_template bp = Blueprint('bp', __name__) @bp.record_once def register_filters(state): app = state.app app.jinja_env.filters['reverse'] = lambda s: s[::-1] @bp.route('/') def index(): return render_template('index.html') app = Flask(__name__) app.register_blueprint(bp)

Шаблон для примера:

<+jinja+>

{{ 'abcde'|reverse }}

<-jinja+>

Результат выполнения кода для адреса /:

<+html+>

edcba

<-html+>

Смотрите также

  • метод record,
    который регистрирует функцию для каждого экземпляра приложения
  • метод register,
    который регистрирует чертёж в приложении
  • метод make_setup_state,
    который создаёт объект состояния для чертежа
  • метод template_filter,
    который регистрирует пользовательский фильтр шаблонов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить