Исключение NotFound
Исключение NotFound применяется для того, чтобы сообщить клиенту,
что запрошенный URL или ресурс не существует. При возбуждении этого
исключения Flask автоматически формирует ответ с HTTP-статусом 404.
Объект исключения принимает необязательный параметр description,
в котором можно передать текстовое пояснение ошибки.
Синтаксис
from werkzeug.exceptions import NotFound
raise NotFound(description)
Пример
Давайте возбудим исключение NotFound внутри обработчика,
если запрошен элемент с несуществующим идентификатором:
from flask import Flask
from werkzeug.exceptions import NotFound
app = Flask(__name__)
@app.route('/article/<int:article_id>')
def article(article_id):
if article_id != 1:
raise NotFound('article not found')
return 'article'
Результат выполнения кода для адреса /article/2:
<!doctype html>
<html lang=en>
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>article not found</p>
Пример
Давайте перехватим исключение NotFound с помощью
обработчика ошибок errorhandler и вернём собственный ответ:
from flask import Flask, jsonify
from werkzeug.exceptions import NotFound
app = Flask(__name__)
@app.errorhandler(NotFound)
def handle_not_found(error):
res = {'error': error.description}
return jsonify(res), 404
@app.route('/user/<name>')
def user(name):
if name != 'abcde':
raise NotFound('user not found')
return name
Результат выполнения кода для адреса /user/xyz:
{"error": "user not found"}
Смотрите также
-
класс
HTTPException,
который является базовым для всех исключений Flask -
атрибут
code,
который хранит HTTP-статус исключения -
атрибут
description,
который содержит текстовое описание ошибки -
исключение
MethodNotAllowed,
которое возбуждается при недопустимом HTTP-методе