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

2024-03-01

我们正在将 Flask 应用程序从基于函数的视图迁移到可插入视图,除了错误处理程序之外,一切都按预期工作。我试图将所有错误处理程序放入一个名为 error_handlers.py 的模块中,并将其导入到主模块中。但它不起作用。 尝试在 Google 中搜索并按照相同的方式找到一些 Git 存储库,但它对我不起作用,请帮助我解决这个问题。

app
 |
 |__ __init__.py
 |__ routing.py (which has the app=Flask(__name__) and imported error handlers here [import error_handlers])   
 |__ views.py 
 |__ error_handlers.py (Ex: @app.errorhandler(FormDataException)def form_error(error):return jsonify({'error': error.get_message()})
 |__ API (api modules)
      |
      |
      |__ __init__.py
      |__ user.py  

我正在使用 Python 2.6 和 Flask 0.10.1。


虽然你可以使用一些来做到这一点循环进口 http://en.wikipedia.org/wiki/Circular_dependency, e.g.:

app.py

import flask

app = flask.Flask(__name__)

import error_handlers

错误处理程序.py

from app import app

@app.errorhandler(404)
def handle404(e):
    return '404 handled'

显然,在更复杂的场景中这可能会变得棘手。

Flask 有一种干净灵活的方式来从多个模块组成应用程序,这是一个概念蓝图 http://flask.pocoo.org/docs/blueprints/。使用以下方法注册错误处理程序flask.Blueprint http://flask.pocoo.org/docs/api/#blueprint-objects您可以使用以下任一方法:

  • flask.Blueprint.errorhandler http://flask.pocoo.org/docs/api/#flask.Blueprint.errorhandler处理本地蓝图错误的装饰器

  • flask.Blueprint.app_errorhandler http://flask.pocoo.org/docs/api/#flask.Blueprint.app_errorhandler处理全局应用程序错误的装饰器。

Example:

错误处理程序.py

import flask

blueprint = flask.Blueprint('error_handlers', __name__)

@blueprint.app_errorhandler(404)
def handle404(e):
    return '404 handled'

app.py

import flask
import error_handlers

app = flask.Flask(__name__)
app.register_blueprint(error_handlers.blueprint)

两种方法效果相同,取决​​于哪种更适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 学习 C#、ASP.NET 3.5 - 我应该按什么顺序学习/跳过什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 C 和 ASP net 有很多内容 我应该从哪里开始 我不应该关注什么 我应该先学Winform然后再学WPF吗 Webforms Silver
  • 删除 DOM 警告 PHP

    我有这个代码 strhtml file get contents 05001400300320100033100 html dochtml new DOMDocument dochtml gt loadHTML strhtml elm do
  • 使用 GSON 将 Map 转换为 JSON?

    嘿伙计们 我很好奇是否可以使用 GSON 将 Map 转换为 JSON 反之亦然 我放入的对象已经使用 GSON 从 JSON 转换为对象 我正在使用的对象如下所示 public class Locations private List
  • 使用 EntityObjects 进行 Ajax 绑定的 Telerik MVC Grid 出现循环引用异常

    我已经使用 Telerik MVC Grid 有一段时间了 这是一个很好的控件 但是 与使用网格和 Ajax 绑定到从实体框架创建和返回的对象相关的一件烦人的事情不断出现 实体对象具有循环引用 当您返回IEnumerable
  • RecyclerView 具有固定的第一行作为标题

    我想创建一个具有固定第一行的回收器视图 该视图应充当标题 另外 如何防止它与其他行元素一起滚动 不要将固定标头放入RecyclerView 包裹住RecyclerView in a vertical LinearLayout 其上方有固定标
  • 是否“self.propery = [[SomeClass alloc] init];”内存泄漏?

    用 Objective C 编写安全吗 self propery SomeClass alloc init 代替 SomeClass tmp SomeClass alloc init self property tmp tmp releas
  • TortoiseSVN 无法打开 ra_local 会话到 URL win XP

    我试图在 Windows XP 机器上通过 svnTortoise 使用 svn 只有我 只是想在家里做这件事 我在我的笔记本电脑上安装了乌龟 一切都很好 然后我来到我的桌面并安装了svnTortoise并尝试了它 但这次我得到了这些错误
  • 在 RabbitMQ 主题交换中路由与模式不匹配的消息

    两个队列绑定到具有以下路由键的主题交换 队列 A 与路由键模式匹配绑定 foo队列 B 与路由键模式匹配绑定 bar 我想向此交换添加第三个队列 该队列接收的消息都不是foo消息也不bar消息 如果我用一个绑定这个队列 路由密钥 我自然会得
  • Airflow - 跳过未来的任务实例而不更改 dag 文件

    我有一个 DAG abc 计划在每天上午 7 点 美国中部标准时间 运行 并且该 DAG 中有任务 xyz 由于某种原因 我不想为明天的实例运行任务 xyz 之一 如何跳过该特定任务实例 我不想对代码进行任何更改 因为我无权访问 Prod
  • 未加载用于在 Visual Studio 2012 中调试自定义项目的符号文件

    我在 Visual Studio 2012 中有一个大型解决方案 其中包含可执行文件和类库项目 调试应用程序时 不会命中某一特定类库项目中的断点 我看了看调试 gt 窗口 gt 模块窗口检查该项目的符号状态 它说 找不到或打开 PDB 文件
  • 我是否需要对使用 NewIntArray 创建的数组调用 ReleaseIntArrayElements?

    我有一个本机方法可以对位图进行一些工作 在该方法内部 我通过方法调用获取图像数据 该方法调用将数据写入jintArray我用它创建的参数NewIntArray jintArray pixels env gt NewIntArray widt
  • Grafana 条形宽度太小

    我想知道如何在直方图中获得更大的条形宽度 例如条形图 This is the graph how it looks rigth now And this is the corresponding query in flux 在 Grafan
  • Ninject.Web.PageBase 仍然导致对注入依赖项的空引用

    我有一个使用 Ninject 2 0 的 ASP NET 3 5 WebForms 应用程序 但是 尝试使用 Ninject Web 扩展来提供对 System Web UI Page 的注入 即使我切换到使用服务定位器来提供引用 使用 N
  • H2索引名称唯一性

    我对 h2 数据库中索引名称的唯一性有一个小问题 使用 mysql mariadb 可以同时为表 A 和表 B 定义名为 X 的索引 对于 h2 数据库这是不可能的 因为每个数据库的索引名称应该是唯一的 这对我来说是一个问题 因为我有一个基
  • 如何安排本地 Azure DevOps 构建每 5 分钟运行一次?

    不用管理由 我有一个案例 需要每 5 分钟运行一次构建 本地安装不支持 YAML 中的计划 那么 我们该怎么做呢 我可能可以使用 REST Api 但这很糟糕 因为我似乎要么创建一个一次性脚本 要么创建一个用于非常简单类型的计划的脚本 似乎
  • 丢包纠错码 (UDP)

    我不知道要寻找什么 因为我从 纠错代码 中得到的只是与您不知道错误位置的情况相关的内容 因此 这些代码比我需要的要复杂得多 而且效率低下 在下文中 请注意位等于数据包 因为只有整个数据包可能会丢失 因此位类比非常适合 是否有 ECC 考虑到
  • 授予某个数据库中所有存储过程的执行权限

    正如标题所示 我需要授予数据库中每个存储过程的执行权限 我们已经从测试转向生产 对生产数据库的控制减少了 并且所有导入的存储过程现在都获得了零权限 一件有趣的事情是 是否有任何方法可以确保所有导入的存储过程从一开始就获得执行权限 谢谢你的帮
  • 如何计算两个日期之间的天数?

    例如 输入框中给出两个日期
  • pip 安装 PIL 失败

    我正在尝试安装 pip 包 PIL 但是安装不起作用并抛出以下错误 Could not find a version that satisfies the requirement pil from xhtml2pdf 0 0 4 gt r
  • 我们可以在单独的模块中使用 Flask 错误处理程序吗

    我们正在将 Flask 应用程序从基于函数的视图迁移到可插入视图 除了错误处理程序之外 一切都按预期工作 我试图将所有错误处理程序放入一个名为 error handlers py 的模块中 并将其导入到主模块中 但它不起作用 尝试在 Goo