Я создаю простое веб-приложение, используя Flask.Для некоторых представлений я выдаю ошибку 403, если определенные условия не соответствуют:
@admin.route("/employees/assign/<int:id>", methods=["GET", "POST"])
@login_required
def assign_employee(id):
"""Assign a department and a role to an employee."""
check_admin()
employee = Employee.query.get_or_404(id)
if employee.is_admin:
abort(403,f"You're not permitted to edit {employee.first_name}'s role and department.")
do_something()
return render_template(a_template)
Для обработки этих ошибок я также добавил обработчики ошибок в свой основной файл инициализации.
@app.errorhandler(403)
def fordbidden(error):
return (
render_template(
"errors/403.html", title="Forbidden", error_message=error.description
),
403,
)
Наконец, я отображаю описание ошибки в своем шаблоне Jinja:
<div style="text-align: center">
<h1> 403 Error </h1>
{% if error_message %}
<h3> {{error_message}} </h3>
{% else %}
<h3>You're not authorised to access this ressource.</h3>
{% endif %}
<hr class="intro-divider">
<a href="{{ url_for('home.homepage') }}" class="btn btn-default btn-lg">
<i class="fa fa-home"></i>
Home
</a>
</div>
Что я хотел бы сделать, это отобразить пользовательское сообщение об ошибке , еслии только если есть один, иначе использовать стандартное сообщение, определенное в моем шаблоне.Однако, похоже, что мой {% if error_message %}
всегда будет истинным, потому что ошибка всегда передает сообщение по умолчанию.
Есть ли способ проверить наличие специального сообщения об ошибке?