Почему эта функция Flask принимает аргумент ошибки? - PullRequest
0 голосов
/ 16 июня 2019

Я изучаю Python и пытаюсь создать сайт. Я нахожусь в точке, где вам нужно обрабатывать ошибки, но я не понимаю пример, приведенный в документации Flask:

@app.errorhandler(404)
def not_found(error):
    return render_template('error.html'), 404

Почему вам нужно набрать not_found(error): вместо not_found():?

1 Ответ

1 голос
/ 16 июня 2019

@app.errorhandler() не регистрирует обычный просмотр.Регистрирует обработчик ошибок .Обработчикам ошибок передается объект ошибки, поэтому они могут определить, как лучше создать альтернативное представление.Из документации:

Обработчик ошибок - это функция, которая возвращает ответ при возникновении типа ошибки, аналогично тому, как представление является функцией, которая возвращает ответ при совпадении URL-адреса запроса. Передается экземпляр обрабатываемой ошибки , который, скорее всего, HTTPException.

(выделено жирным шрифтом)

Вы не можете найти эту информацию об ошибке на объекте request, потому что подобные ошибки вызваны обычным представлением, обрабатывающим текущий запрос, выдающим ошибку.

Обычный путь:

  • Запрос приходит
  • Flask находит правильное представление для запуска и вызывает его
  • Представление обнаруживает проблему и вызывает ошибку 404 not found, вызывая abort(404)
  • Flask находит соответствующий обработчик ошибок и вызывает его с объектом ошибки .
  • Ответ обработчика ошибок отправляется обратно в браузер.
...