flask - 单独蓝图中的错误处理程序不起作用
问题描述
我目前正在使用烧瓶开发一个应用程序。每当我遇到错误时,我都会使用 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 相同的蓝图中,它就可以正常工作。如何拥有单独的错误处理程序蓝图?
解决方案
这个答案解释了你的解决方案并对我有用:
看起来您的代码中唯一的问题是您正在使用
@bp.errorhandler(404)
你应该使用
@bp.app_errorhandler(404)
推荐阅读
- postgresql - Postgres / JDBC 与 pgjdbc-ng:将 EAN 类型写入数据库
- firebase-storage - 如何升级到 Firebase 存储规则 v2
- c++ - 卡在项目 euler 的问题 8 上,得到错误的答案,但代码似乎正确
- c - 如何处理 C 中输入的数字太大?
- python - 如何通过匹配某个元素来填充二维数组的所有行?
- angular - 关于测试 Angular $localize (Angular 9) 的建议
- amazon-web-services - Boto3 SES 抛出 TypeError: sequence item 0: expected str instance, tuple found
- javascript - 如何使用 d3.js 以编程方式触发拖动事件?
- python - 如何使用 python webbot 获取包含标签的文本?
- sql - SQL SCCM 数据库服务器通过证书解密