在Python中将数组作为GET查询参数

57 投票
2 回答
88854 浏览
提问于 2025-04-17 05:14

我知道在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>) 来获取这些参数的值(文档)。

否则,你就需要自己解析查询字符串了。

撰写回答