Атрибут routing_exception
Атрибут routing_exception применяется к объекту запроса
request и содержит исключение, которое возникло
во время маршрутизации. Если маршрут был найден успешно,
значением атрибута будет None. Если же Flask
не смог сопоставить URL с каким-либо маршрутом, в этом
атрибуте окажется объект исключения, например NotFound
или MethodNotAllowed. Это бывает полезно при
обработке ошибок, когда нужно узнать причину, по которой
запрос не был обработан.
Синтаксис
request.routing_exception
Пример
Давайте посмотрим, что содержит атрибут при успешной маршрутизации:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
return str(request.routing_exception)
Результат выполнения кода для адреса /:
None
Пример
Давайте обработаем ошибку 404 и выведем тип исключения
из атрибута routing_exception:
from flask import Flask, request
app = Flask(__name__)
@app.errorhandler(404)
def not_found(error):
exc = request.routing_exception
return 'exception: ' + type(exc).__name__
Результат выполнения кода для несуществующего адреса
/abcde:
exception: NotFound
Пример
Давайте проверим атрибут при обращении к маршруту методом, который не разрешён:
from flask import Flask, request
app = Flask(__name__)
@app.route('/user', methods=['POST'])
def user():
return 'hello'
@app.errorhandler(405)
def not_allowed(error):
exc = request.routing_exception
return 'exception: ' + type(exc).__name__
Результат выполнения кода при GET-запросе на адрес
/user:
exception: MethodNotAllowed