我想将自己的http状态代码添加到我的Flask应用程序中。这是我的代码:
from werkzeug import exceptions
class UnrecognizedParametersOrCombination(exceptions.HTTPException):
code = 460
description = 'The query parameters or their combination are not recognized!'
exceptions.default_exceptions[460] = UnrecognizedParametersOrCombination
但是当我打电话给abort(460)
时,出现了错误:
LookupError: no exception for 460
似乎我没有正确地向werkzeug默认异常注册新的异常。官方文件在这部分上很模糊。我该怎么办?
答案 0 :(得分:0)
好的,我知道了。根据文件:
http://flask.pocoo.org/docs/1.0/errorhandling/
这是行不通的。我们可以做的是定义一个异常,然后raise()
而不是abort()
它。看来werkzeug现在不再支持在其默认异常中注册自定义的http状态代码...
所以现在我的工作代码是:
from werkzeug import exceptions
class UnrecognizedParametersOrCombination(exceptions.HTTPException):
code = 460
description = 'The query parameters or their combination are not recognized!'
def handle_460(e):
return render_template('460.html')
app.register_error_handler(UnrecognizedParametersOrCombination, handle_460)
现在我需要使用raise UnrecognizedParametersOrCombination()
而不是abort(460)
进行响应。因此,响应是200,而不是非官方支持的460。
答案 1 :(得分:0)
尝试中止映射?
abort.mappings[460] = UnrecognizedParametersOrCombination
答案 2 :(得分:0)
您不应该这样做,因为这样会破坏与HTTP状态代码关联的RFC。 HTTP状态代码应该是通用的,不会被滥用。我建议响应一些JSON,例如“ status”:“ 460”,如果要使用自己的调试代码,请不要将它们用作HTTP响应。