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
Ошибка обработки 404
Ссылки:
- Flask Официальная документация по обработке ошибок