您的位置:

提示KeyError(f"'{code_or_exception}' is not a recognized HTTP error"" code. Use a subclass of HTTPException with that code"" instead.")的解决方案

  发布时间:2023-02-21 07:17:33
报错的原因Flask框架中,当使用abort()函数并传入一个不被识别的HTTP错误码时,可能会出现这个错误。这个错误的产生可能是因为你在abort函数里面传入了一个不存在或不被支持的HTTP错误码,而不是按照规范使用HTTPException子类。使用例子举个例子,假设你有这样的代码这样运行你会发现会抛出错误为了避免这个错误,你需要改变你传入abort函数的参数,使用合法的HTTP错误码或者使用HTTPException的子类这样就能避免上述错误的出现。

报错的原因

Flask框架中,当使用abort()函数并传入一个不被识别的HTTP错误码时,可能会出现这个错误。这意味着你在代码中使用了一个不被支持的HTTP错误码来终止请求。

这个错误的产生可能是因为你在abort函数里面传入了一个不存在或不被支持的HTTP错误码,而不是按照规范使用HTTPException子类。

如何解决

为了解决这个错误,您需要确保在使用abort()函数时,传入的是被支持的HTTP错误码,或者使用HTTPException的子类来替代传入错误码。

例如,如果您想终止请求并返回404错误,您可以使用以下代码:


from flask import abort
from werkzeug.exceptions import HTTPException

abort(404)
# or
raise HTTPException("Not Found", status_code=404)

或者使用flask内置的HTTPException类, 如:


from flask import abort
from werkzeug.exceptions import NotFound

abort(NotFound)

这样就可以避免错误的出现。

使用例子

举个例子,假设你有这样的代码:


from flask import Flask,abort
app = Flask(__name__)

@app.route('/')
def index():
    # this will raise an error since 400 is not a recognized HTTP error code 
    abort(400)

if __name__ == '__main__':
    app.run()

这样运行你会发现会抛出错误:


KeyError: "'400' is not a recognized HTTP error code. Use a subclass of HTTPException with that code instead."

为了避免这个错误,你需要改变你传入abort函数的参数,使用合法的HTTP错误码或者使用HTTPException的子类:


from flask import Flask,abort
from werkzeug.exceptions import NotFound
app = Flask(__name__)

@app.route('/')
def index():
    # this will return a 404 error 
    abort(NotFound)

if __name__ == '__main__':
    app.run()

这样就能避免上述错误的出现。