您的位置:

报错TypeError("The view function did not return a valid response tuple."" The tuple must have the form (body, status, headers),"" (body, status), or (body, headers).")的解决

  发布时间:2023-02-24 09:01:22
报错的原因这个错误是由于在Flask中使用了一个视图函数,该函数没有返回一个有效的响应元组所导致的。在Flask中,视图函数必须返回一个元组,其中包含响应体、状态代码和头部信息。通常,这可以通过使用Flask提供的响应对象来完成。例如,可以使用 make_response() 函数来创建一个响应对象,并将响应体、状态代码和头部信息添加到该对象中另外也可以使用 jsonify() 来返回 json 数据还可以使用Flask的简洁的语法来返回响应使用上述方法中的任意一种都可以解决这个问题。

报错的原因

这个错误是由于在Flask中使用了一个视图函数,该函数没有返回一个有效的响应元组所导致的。在Flask中,视图函数必须返回一个元组,其中包含响应体、状态代码和头部信息。元组的形式必须是(body, status, headers)、(body, status)或(body, headers)。

如何解决

解决这个错误的方法是确保视图函数正确地返回了一个响应元组。通常,这可以通过使用Flask提供的响应对象来完成。

例如,可以使用 make_response() 函数来创建一个响应对象,并将响应体、状态代码和头部信息添加到该对象中。


from flask import make_response

@app.route('/')
def index():
    response = make_response('Hello World!')
    response.headers['Content-Type'] = 'text/plain'
    return response

另外也可以使用 jsonify() 来返回 json 数据。


from flask import jsonify

@app.route('/')
def index():
    return jsonify(result='Hello World')

还可以使用Flask的简洁的语法(Flask.response_class)来返回响应


from flask import Response

@app.route('/')
def index():
    return Response('Hello World!', mimetype='text/plain')

使用上述方法中的任意一种都可以解决这个问题。

使用例子

是的,可以这样:


from flask import Flask, make_response, jsonify, Response

app = Flask(__name__)

@app.route('/')
def index():
    # Using make_response()
    response = make_response('Hello World!')
    response.headers['Content-Type'] = 'text/plain'
    return response

@app.route('/json')
def json_response():
    # Using jsonify()
    return jsonify(result='Hello World')

@app.route('/resp')
def response_example():
    # Using Flask.response_class
    return Response('Hello World!', mimetype='text/plain')

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

上面的代码中,有3个不同的路由,分别返回3种不同的响应类型。 您可以在浏览器中输入http://localhost:5000/ ,http://localhost:5000/json 和 http://localhost:5000/resp来查看这三种响应。