在Python中将数组作为GET查询参数
我知道在PHP中,我可以直接用 $_GET['key1']['key2']
来获取以数组形式发送的GET数据,但在Python中,这种操作是否也能实现呢?因为我收到的只是一个字符串,并没有被识别为数组或列表。
我使用的是flask/werkzeug,如果这有关系的话。
2 个回答
68
request.args
是一个叫做 MultiDict 的实例(你可以在这里查看它的详细信息:MultiDict,以及 Flask 请求 API)。
request.args[key] ## returns a single value, the first if there are multiple
request.args.getlist(key) ## returns a list
如果你想提交比简单的键值对更复杂的结构,可以考虑发送一个 JSON 编码的对象。
另外,可以看看 jQuery 的递归参数序列化 模式,还有 jquery-unparam 这个库,它可以把这些参数反序列化。
75
据我所知,PHP在处理参数名称时的深度解析是独特的。
如果你只需要一个简单的列表,可以传递多个同名的参数,然后使用 request.args.getlist(<paramname>)
来获取这些参数的值(文档)。
否则,你就需要自己解析查询字符串了。