Python 和 Flask 如何返回列表? [复制]
Posted
技术标签:
【中文标题】Python 和 Flask 如何返回列表? [复制]【英文标题】:How return list on Python and Flask? [duplicate] 【发布时间】:2019-05-28 22:45:38 【问题描述】:我正在尝试在烧瓶中返回此列表。 Teacher 是一个类并返回对象。
@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
teachers = []
for teacher in Teacher.objects:
teachers.append(teacher)
return teachers
此代码返回的典型错误是
TypeError: 'list' object is not callable The view function did not return a valid response.
我快疯了,我不知道发生了什么。有人知道吗?
谢谢!!
编辑:
我已经解决了。问题不在于如何返回列表,问题在于对象的 JSON 序列化。
@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
teachers = []
for teacher in Teacher.objects:
teacherJson = teacher.to_json()
teacherData = json.loads(teacherJson)
teachers.append(teacherData)
return jsonify('teachers': teachers)
感谢您的帮助。
【问题讨论】:
您是否尝试过检查Teacher.objects
中的值?此外,您可能需要以 json 格式返回响应。因此,您需要以 json 格式传递此列表。
试试return json.dumps(teachers)
这不起作用,它给了我这个错误:TypeError: <Teacher: Teacher object> is not JSON serializable
【参考方案1】:
您不能直接从烧瓶视图返回列表。请尝试 jsonify
from flask import jsonify
@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
teachers = []
for teacher in Teacher.objects:
teachers.append(teacher)
return jsonify(teachers)
【讨论】:
不起作用类型错误:List 类型的对象不是 JSON 可序列化的 这至少适用于 python 2。 @ajbraus 看看这里***.com/questions/16586180/…【参考方案2】:你正在返回一个列表,Flask 期望返回一个响应。
from flask import jsonify
@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
teachers = []
for teacher in Teacher.objects:
teachers.append(teacher)
return jsonify(teachers: [teachers])
【讨论】:
这不起作用,它给了我这个错误:TypeError: <Teacher: Teacher object> is not JSON serializable
这不起作用。
您可以在他的回答中看到 OP 的编辑。 teacher
对象如果不能自动转换,则必须在此处转换为 JSON。以上是关于Python 和 Flask 如何返回列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python/FLASK - html 表单返回字符串。如何检查它是不是包含数字?
python flask 如何读取数据库数据并返回到html