Как создать пользовательскую конечную точку для jinja Undefined error? - PullRequest
0 голосов
/ 07 апреля 2019

Я не знаю почему, но мой обработчик ошибок 404 не прерывается, и мое веб-приложение обрабатывает любую страницу как существующую, что заставляет ее генерировать jinja2.exceptions.UndefinedError вместо обычной ошибки 404.

Как сделать обработчик ошибок для jinja2.exceptions.UndefinedError?

Я уже пытался создать пару из 404 конечных точек, но, похоже, ни одна из них не работает.

1 Ответ

0 голосов
/ 07 апреля 2019

jinja2.exceptions.UndefinedError возвращает ошибку HTTP 500:

Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)

В соответствии с документацией Flask (ссылка 1):

Обработчик «500 Internal Server Error» будетне используется при работе в режиме отладки.Вместо этого будет показан интерактивный отладчик.

Это указывает на то, что обработчик ошибок для HTTP 500 или внутренних ошибок сервера не будет обнаружен @app.errorhandler(500), если мы запустим приложение в режиме отладки (debug=True).

Вот пример того, как перехватить jinja2.exceptions.UndefinedError с помощью пользовательского обработчика ошибок, когда режим отладки имеет значение false.

app.py:

from flask import Flask, render_template


app = Flask(__name__)

@app.errorhandler(500)
def internal_server_error(e):
    return render_template('custom_error_handler.html', error_code=500), 500

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

@app.route('/', methods = ['GET'])
def home():
    return render_template("home.html")

if __name__ == '__main__':
    app.run(debug=False)

home.html:

<html>
    <head>
        <title>Home</title>
    </head>
    <body>
        <h1>Data</h1>
        {{ data+student }}
    </body>
</html>

custom_error_handler.html:

<h3>Custom Error Page</h3>
{{ error_code }}

Выход:

  • Ошибка обработки 500

    handling 500 error

  • Ошибка обработки 404

    Handling 404 error

Ссылки:

  1. Flask Официальная документация по обработке ошибок
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...