Flask提供jsonify()了以下便利:
from flask import jsonify
@app.route("/<major>/")
def major_res(major):
course_list = list(client.db.course_col.find({"major": major.upper()}))
return flask.jsonify(**course_list)
这将返回args jsonify
作为JSON表示形式,并且与你的代码不同,它将发送适当的Content-Type
标头:application/json
。注意文档对格式的看法:
如果将JSONIFY_PRETTYPRINT_REGULARconfig
参数设置为True
或Flask应用程序在调试模式下运行,则该函数的响应将很漂亮地打印出来。压缩(不太漂亮)格式当前表示分隔符后没有缩进和空格。
当不在调试模式下时,响应将接收非漂亮的JSON。这不应该成为问题,因为不需要对用于JavaScript的JSON进行格式化(这只是通过网络发送的额外数据),并且大多数工具格式都是自己接收JSON的。
如果你仍然想使用json.dumps()
,可以通过返回Response
with 来发送正确的mimetype current_app.response_class()
。
from flask import json, current_app
@app.route("/<major>/")
def major_res(major):
course_list = list(client.db.course_col.find({"major": major.upper() }))
return current_app.response_class(json.dumps(course_list), mimetype="application/json")