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

Метод before_request

Метод before_request применяется к объекту Blueprint и позволяет повесить функцию, которая будет выполняться перед обработкой каждого запроса, привязанного к этому чертежу. Первым параметром передаётся функция-обработчик. Если эта функция возвращает не None, то её результат используется как ответ, а основной обработчик маршрута не вызывается. Такой подход удобен для проверки авторизации, установки соединения с базой данных или логирования входящих запросов.

Синтаксис

@bp.before_request def func_name(): ...

Пример

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

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.before_request def before(): print('before request') @bp.route('/') def index(): return 'hello' app.register_blueprint(bp)

После запроса к адресу '/' в консоли появится:

before request

Пример

Давайте прервём обработку запроса, вернув ответ прямо из before_request:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.before_request def check(): return 'blocked' @bp.route('/') def index(): return 'hello' app.register_blueprint(bp)

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

blocked

Как видно, основной обработчик index не был вызван, так как функция check вернула строку, а не None.

Пример

Давайте используем before_request вместе с глобальным объектом g для передачи данных в обработчик:

from flask import Flask, Blueprint, g app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.before_request def set_user(): g.user = 'abcde' @bp.route('/') def index(): return g.user app.register_blueprint(bp)

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

abcde

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

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