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

Метод record

Метод record применяется к объекту чертежа Blueprint и сохраняет функцию, которая будет вызвана при регистрации чертежа в приложении Flask. Первым параметром передаётся функция обратного вызова. Метод удобен для отложенной инициализации ресурсов, настройки расширений и модификации объекта приложения после его привязки к чертежу.

В отличие от метода record_once, функция, переданная в record, может быть выполнена для каждого приложения, к которому применяется чертёж. Если один и тот же чертёж регистрируется несколько раз с разными именами, функция будет вызвана повторно.

Синтаксис

@bp.record def callback(setup_state): pass

Функция обратного вызова принимает один аргумент - объект состояния регистрации setup_state. Через него доступны атрибуты app и blueprint, которые ссылаются на приложение Flask и на сам чертёж соответственно.

Пример

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

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.record def setup(setup_state): print(setup_state.app.name) @bp.route('/') def index(): return 'hello' app.register_blueprint(bp)

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

"app"

Пример

Давайте через record добавим глобальную переменную в конфигурацию приложения:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.record def setup(setup_state): setup_state.app.config['GREETING'] = 'hello' @bp.route('/') def index(): return app.config['GREETING'] app.register_blueprint(bp)

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

hello

Пример

Давайте используем record для регистрации фильтра шаблонов в приложении:

from flask import Flask, Blueprint, render_template app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.record def setup(setup_state): setup_state.app.jinja_env.filters['upper'] = str.upper @bp.route('/') def index(): return render_template('index.html', text='abcde') app.register_blueprint(bp)

Содержимое шаблона:

<p>{{ text|upper }}</p>

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

<p>ABCDE</p>

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

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