使用Flask Restful引发自定义错误

使用Flask Restful引发自定义错误,flask,flask-restful,Flask,Flask Restful,总之,我试图使用Flask Restful引发一个自定义错误,如下所示。出于测试目的,我在文档中定义并注册了错误字典链接:api=flask\u restful.api(app,errors=errors) 但是,当我想在资源模块中使用(例如)abort(409)引发自定义错误时,firebug报告: { “信息”:“冲突”, “地位”:409 } 这看起来像是标准的409错误,没有定制;从文档中,我会看到定制的错误消息——“具有该用户名的用户已经存在。” 我想我遗漏了一些关于错误本身的信息。我

总之,我试图使用Flask Restful引发一个自定义错误,如下所示。出于测试目的,我在文档中定义并注册了错误字典链接:
api=flask\u restful.api(app,errors=errors)

但是,当我想在资源模块中使用(例如)
abort(409)
引发自定义错误时,firebug报告:

{ “信息”:“冲突”, “地位”:409 }

这看起来像是标准的409错误,没有定制;从文档中,我会看到定制的错误消息——“具有该用户名的用户已经存在。”


我想我遗漏了一些关于错误本身的信息。我应该以任何方式使用字典键吗?查看Flask Restful源代码没有任何帮助,尽管我尝试过。

要使用Flask Restful为标准HTTP状态代码定义消息,必须重新定义所提供的HTTP异常之一,Flask基于该异常

根据您的问题,下面是一个覆盖以下内容的示例:

因此,每次调用
abort(409)
,都会返回一个正确的mediatype表示,并带有定义的消息

但是,通过使用此方法,在您将使用
409
状态代码中止的任何位置,这将返回一条关于已存在用户名的用户的消息。当您在处理用户以外的其他资源的视图中调用
abort(409)
时,这不太可能是您想要的

因此,每当您想要提供自定义消息时,我建议您只需使用Flask RESTful
abort
方法,如下所示:

from flask.ext.restful import abort

abort(409, description="A user with that username already exists.")

一般来说,当您引发Werkzeug提供的中不存在的自定义异常(使用
raise()
,而不是
abort()
)时,通过定义自定义错误消息来扩展Flask RESTful非常有用。

此处相同。如果我为400定义了3个不同的错误,我如何提出这些错误?在文档中,它说它在api函数中保存了try和catch,但我看不出一个明确的方法。我在上面遇到了很多问题:**TypeError:abort()只接受1个参数(给定2个)@Kelvin确保从flask而不是从flask\u restful导入中止。这就是我收到此错误的原因。@Kelvin try abort(409,message=“具有该用户名的用户已经存在。”)
from flask.ext.restful import abort

abort(409, description="A user with that username already exists.")