Spec-Zone.ru › Flask 0.12

Пользовательские страницы ошибок

Flask поставляется с удобной функцией abort(), которая прерывает запрос с кодом HTTP-ошибки. Она также предоставит простую черно-белую страницу ошибки с базовым описанием, но ничего особенного.

В зависимости от кода ошибки пользователь с большей или меньшей вероятностью увидит такую ошибку.

Общие коды ошибок

Следующие коды ошибок часто отображаются пользователю, даже если приложение работает корректно:

404 Not Found

Знакомое сообщение «Вы ошиблись при вводе адреса». Такая распространённая ошибка, что даже новички в интернете знают, что 404 означает: черт возьми, того, что я искал, нет. Очень полезно убедиться, что на странице 404 есть что-то полезное, по крайней мере, ссылка на главную страницу.

403 Forbidden

Если у вас есть какой-либо контроль доступа на вашем веб-сайте, вы должны отправлять код 403 для запрещённых ресурсов. Поэтому убедитесь, что пользователь не запутался, когда пытается получить доступ к запрещённому ресурсу.

410 Gone

Знаете ли вы, что у «404 Not Found» есть брат под названием «410 Gone»? Мало кто на самом деле его реализует, но идея в том, что ресурсы, которые ранее существовали и были удалены, отвечают кодом 410, а не 404. Если вы не удаляете документы постоянно из базы данных, а только отмечаете их как удалённые, сделайте пользователю одолжение и используйте код 410 вместо него, и отобразите сообщение о том, что то, что они искали, было удалено навсегда.

500 Internal Server Error

Обычно происходит из-за ошибок программирования или перегрузки сервера. Очень хорошая идея — иметь там красивую страницу, потому что ваше приложение будет время от времени ломаться (см. также: Ошибки приложения).

Обработчики ошибок

Обработчик ошибок — это функция, как и функция представления, но она вызывается, когда происходит ошибка, и ей передаётся эта ошибка. Скорее всего, ошибка — это HTTPException, но в одном случае это может быть другая ошибка: обработчик ошибок внутренней серверной ошибки также получит другие экземпляры исключений, если они не были перехвачены.

Обработчик ошибок регистрируется с помощью декоратора errorhandler() и кодом ошибки исключения. Помните, что Flask не установит для вас код ошибки, поэтому убедитесь, что вы также передаёте код HTTP-статуса при возвращении ответа.

Обратите внимание, что если вы добавите обработчик ошибок «500 Internal Server Error», Flask не вызовет его, если он работает в режиме отладки.

Вот пример реализации для исключения «404 Page Not Found»:

from flask import render_template

@app.errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404

Пример шаблона может быть таким:

{% extends "layout.html" %}
{% block title %}Page Not Found{% endblock %}
{% block body %}
  <h1>Page Not Found</h1>
  <p>What you were looking for is just not there.
  <p><a href="{{ url_for('index') }}">go somewhere nice</a>
{% endblock %}

© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/0.12.x/patterns/errorpages/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API