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

Метод before_request

Метод before_request применяется к приложению Flask и позволяет выполнить код до того, как запрос будет передан в функцию-обработчик. Функция, зарегистрированная через этот метод, не принимает аргументов и может либо вернуть None, чтобы продолжить обработку запроса, либо вернуть ответ, чтобы прервать выполнение и сразу отправить его клиенту.

Если зарегистрировано несколько функций через before_request, они вызываются в порядке регистрации. Если хотя бы одна из них вернула ответ, остальные функции и обработчик маршрута не выполняются.

Синтаксис

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

Пример

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

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

После запуска сервера и обращения к адресу / в консоли появится сообщение, а в браузере отобразится результат работы обработчика:

hello

Пример

Давайте вернём ответ из функции before_request, чтобы прервать обработку запроса:

from flask import Flask app = Flask(__name__) @app.before_request def before(): return 'page found' @app.route('/') def index(): return 'hello'

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

page found

Пример

Давайте используем before_request для проверки авторизации и пропуска только тех запросов, у которых есть нужный заголовок:

from flask import Flask, request app = Flask(__name__) @app.before_request def check_auth(): if request.headers.get('X-Token') != 'abcde': return 'user denied' @app.route('/') def index(): return 'hello'

Результат выполнения кода для запроса без заголовка X-Token:

user denied

Результат выполнения кода для запроса с заголовком X-Token: abcde:

hello

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

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