Метод errorhandler
Метод errorhandler применяется к объекту blueprint и
позволяет назначить функцию, которая будет вызвана при
возникновении ошибки с определённым HTTP-кодом в пределах
данного blueprint. Первым параметром передаётся код ошибки
(число), вторым - декорируемая функция-обработчик.
В отличие от одноимённого метода класса Flask, обработчик
регистрируется только для маршрутов, принадлежащих этому
blueprint.
Синтаксис
@bp.errorhandler(code)
где code - код ошибки, например 404 или
500. Также можно передать класс исключения.
Пример
Давайте создадим blueprint и зарегистрируем обработчик
ошибки 404 для него:
from flask import Flask, Blueprint
app = Flask(__name__)
bp = Blueprint('bp', __name__)
@bp.errorhandler(404)
def not_found(error):
return 'page not found'
@app.route('/')
def index():
return 'hello'
app.register_blueprint(bp)
Результат выполнения кода для адреса, не входящего в blueprint:
page not found
Пример
Давайте повесим blueprint на префикс /user и
зарегистрируем обработчик ошибки 500:
from flask import Flask, Blueprint
app = Flask(__name__)
bp = Blueprint('bp', __name__, url_prefix='/user')
@bp.errorhandler(500)
def server_error(error):
return 'server error in user section'
@bp.route('/')
def user_index():
return 'user page'
app.register_blueprint(bp)
Результат выполнения кода при возникновении ошибки
внутри /user:
server error in user section
Пример
Давайте передадим в errorhandler класс исключения
ValueError и обработаем его:
from flask import Flask, Blueprint
app = Flask(__name__)
bp = Blueprint('bp', __name__, url_prefix='/api')
@bp.errorhandler(ValueError)
def handle_value_error(error):
return 'invalid value'
@bp.route('/')
def api_index():
raise ValueError('bad input')
app.register_blueprint(bp)
Результат выполнения кода для адреса /api/:
invalid value
Смотрите также
-
метод
app_errorhandler,
который регистрирует обработчик ошибки для всего приложения -
метод
route,
который вешает функцию на адрес внутри blueprint -
метод
register,
который регистрирует blueprint в приложении -
класс
Blueprint,
который создаёт blueprint для группировки маршрутов