单独的蓝图中的错误处理程序不起作用

时间:2019-04-21 17:53:52

标签: flask python-3.7

我目前正在使用Flask开发应用程序。每当遇到错误时,我都会使用中止(例如abort(404))引发该错误。

我创建了一个新的错误处理蓝图,并将以下文件包含在错误蓝图中:

应用程序/错误/ __ init __。py

from flask import Blueprint

bp = Blueprint('errors', __name__)

from app.errors import handlers

app / errors / handlers.py

from app.errors import bp
from flask import jsonify, make_response


@bp.errorhandler(404)
def not_found_error():
    return make_response(jsonify({"error: ", "Not found"}), 404)

我还注册了以下蓝图:

app / __ init __。py

from app.errors import bp as errors_bp
app.register_blueprint(errors_bp)

但是,当我遇到错误时,我得到的是HTML响应而不是JSON响应。如果我将错误处理程序包含在与API相同的蓝图中,则可以正常工作。我如何有一个单独的错误处理程序蓝图?

1 个答案:

答案 0 :(得分:0)

此答案说明了您的解决方案并为我工作:

Can we have Flask error handlers in separate module

代码中唯一的问题是您正在使用

@bp.errorhandler(404)

您应该使用

@bp.app_errorhandler(404)