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

Метод app_errorhandler

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

Главное отличие от метода errorhandler заключается в области действия: обработчики, зарегистрированные через errorhandler, срабатывают только для маршрутов данного блюпринта. Метод app_errorhandler распространяет обработчик на всё приложение, включая маршруты, определённые вне блюпринта.

Синтаксис

@bp.app_errorhandler(code)

Пример

Давайте создадим блюпринт и зарегистрируем в нём обработчик ошибки 404 через app_errorhandler:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.app_errorhandler(404) def not_found(error): return 'page not found' @bp.route('/') def index(): return 'hello' app.register_blueprint(bp)

Теперь при обращении к несуществующему адресу вернётся строка "page not found".

Пример

Проверим, что обработчик, зарегистрированный через app_errorhandler, действует и для маршрутов вне блюпринта:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.app_errorhandler(500) def server_error(error): return 'server error' @bp.route('/user') def user(): return 'user page' @app.route('/') def index(): return 'hello' app.register_blueprint(bp)

Обработчик ошибки 500 сработает для любого маршрута приложения, в том числе для /, определённого напрямую через app.route.

Пример

Зарегистрируем обработчик с использованием объекта ошибки для формирования ответа:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('bp', __name__) @bp.app_errorhandler(404) def not_found(error): return f'error: {error}', 404 @bp.route('/article') def article(): return 'article page' app.register_blueprint(bp)

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

error: 404 Not Found

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

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