Исключение Gone
Исключение Gone наследуется от класса HTTPException и представляет собой ошибку 410 Gone. Оно применяется, когда ресурс, к которому обратился клиент, существовал ранее, но был безвозвратно удалён и не будет восстановлен. В отличие от ошибки 404, которая означает, что ресурс не найден, ошибка 410 является более специфичной и сообщает клиенту о постоянном удалении. При возбуждении этого исключения Flask автоматически возвращает соответствующий HTTP-статус и может отобразить стандартную или пользовательскую страницу ошибки.
Синтаксис
from flask import abort
abort(410)
Также можно импортировать исключение напрямую и возбудить его:
from werkzeug.exceptions import Gone
raise Gone()
Пример
Давайте создадим маршрут, который возвращает ошибку 410 для удалённой статьи:
from flask import Flask, abort
app = Flask(__name__)
@app.route('/article/<int:article_id>')
def article(article_id):
if article_id == 1:
abort(410)
return f'article {article_id}'
Результат выполнения кода для адреса /article/1:
410 Gone
Результат выполнения кода для адреса /article/2:
"article 2"
Пример
Давайте обработаем исключение Gone с помощью собственного обработчика ошибок:
from flask import Flask, abort
from werkzeug.exceptions import Gone
app = Flask(__name__)
@app.errorhandler(Gone)
def handle_gone(error):
return 'this page is gone', 410
@app.route('/user/<name>')
def user(name):
if name == 'abcde':
abort(410)
return f'user {name}'
Результат выполнения кода для адреса /user/abcde:
this page is gone
Смотрите также
-
класс
HTTPException,
который является базовым для всех HTTP-исключений -
исключение
NotFound,
которое сообщает об ошибке 404 -
исключение
Conflict,
которое сообщает об ошибке 409 -
атрибут
code,
который содержит HTTP-код ошибки