Quart/Flask render_template return 紧凑 json
Quart/Flask render_template return compact json
我正在使用 Quart(本质上是 HTTP/2 的 Flask)来提供一些 JSON 内容。 JSON 内容以漂亮的打印格式驻留在 templates/ 目录中,例如
example.json
{
"key1": "value1",
"list1": [
{
"key2": "{{ keyword_arg2 or "value2"}}",
"list2": [
{
"key3": "value3 with spaces",
"key4": "value4"
}
]
}
]
}
如果我只是return render_template('example.json')
,它会保留原始文件中的所有空白。我想要return一个紧凑的形式,即
{"key1":"value1","list1":[{"key2":"value2","list2":[{"key3":"value3 with spaces","key4":"value4"}]}]}
有没有好的方法(最好也将内容类型设置为 application/json)。到目前为止我想出的是:
body = await render_template('example.json')
body = body.replace('\n', '')
body = ''.join(body.split())
r = await make_response(body)
r.headers.set('Content-type', 'application/json')
return r
但它不能很好地处理值中的空格(此版本将它们完全删除)。 Quart中的jsonify
函数是自动设置Content-type为application/json,但是在render_template编辑的字符串return上好像不太好操作,除非我用错了。
render_template
将 return 一个字符串,然后您可以从路由中将其解析为 JSON 和 return。然后,这将使用应用程序的 JSON 配置值 return JSON 响应,the defaults are linked here 例如
import json
@app.get("/")
async def route():
body = await render_template('example.json')
data = json.loads(body)
return data
请注意,return从 Quart 路由中获取字典等同于调用 jsonify
并 return 获取该结果。
我正在使用 Quart(本质上是 HTTP/2 的 Flask)来提供一些 JSON 内容。 JSON 内容以漂亮的打印格式驻留在 templates/ 目录中,例如
example.json
{
"key1": "value1",
"list1": [
{
"key2": "{{ keyword_arg2 or "value2"}}",
"list2": [
{
"key3": "value3 with spaces",
"key4": "value4"
}
]
}
]
}
如果我只是return render_template('example.json')
,它会保留原始文件中的所有空白。我想要return一个紧凑的形式,即
{"key1":"value1","list1":[{"key2":"value2","list2":[{"key3":"value3 with spaces","key4":"value4"}]}]}
有没有好的方法(最好也将内容类型设置为 application/json)。到目前为止我想出的是:
body = await render_template('example.json')
body = body.replace('\n', '')
body = ''.join(body.split())
r = await make_response(body)
r.headers.set('Content-type', 'application/json')
return r
但它不能很好地处理值中的空格(此版本将它们完全删除)。 Quart中的jsonify
函数是自动设置Content-type为application/json,但是在render_template编辑的字符串return上好像不太好操作,除非我用错了。
render_template
将 return 一个字符串,然后您可以从路由中将其解析为 JSON 和 return。然后,这将使用应用程序的 JSON 配置值 return JSON 响应,the defaults are linked here 例如
import json
@app.get("/")
async def route():
body = await render_template('example.json')
data = json.loads(body)
return data
请注意,return从 Quart 路由中获取字典等同于调用 jsonify
并 return 获取该结果。