首页 > 解决方案 > 单独蓝图中的错误处理程序不起作用

问题描述

我目前正在使用烧瓶开发一个应用程序。每当我遇到错误时,我都会使用 abort 来引发它,例如 abort(404)。

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

应用程序/错误/__init__.py

from flask import Blueprint

bp = Blueprint('errors', __name__)

from app.errors import handlers

应用程序/错误/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)

我还注册了蓝图如下:

应用程序/__init__.py

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

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

标签: flaskpython-3.7

解决方案


这个答案解释了你的解决方案并对我有用:

我们可以在单独的模块中使用 Flask 错误处理程序吗

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

@bp.errorhandler(404)

你应该使用

@bp.app_errorhandler(404)


推荐阅读