在Python中获取作为GET查询参数的数组

57
我知道在php中,我可以使用$_GET['key1']['key2']来检索以数组形式发送的GET数据,但是在Python中是否也能做到呢?因为我只接收到一个字符串,而它不能被识别为数组/列表。 我使用flask / werkzeug,如果这很重要的话。

3
在投票关闭一个问题之前,请学会阅读问题和人们实际想要什么。我知道如何获取请求参数,但这不是我所问的。你提供的URL没有带来任何新的东西。 - Romeo M.
4
我没有投票关闭任何东西。毕竟我不到100的声望,所以我做不到。我给了你一个可能有用的链接。 - Confluence
2个回答

74

据我所知,深度解析参数名称在 PHP 中是独特的。

如果你只需要一个简单的列表,只需传递多个具有相同名称的参数并使用request.args.getlist(<paramname>)(文档)。

否则,您需要自己解析查询字符串。


我很担心这个。不幸的是,我正在解析来自支付网关的IPN,它发送数组,所以我认为我必须将它们解析为字符串。 - Romeo M.
IPN_REFNO[23456,23465]&IPN_TOTALAMOUNT[2133,3455]。 - Romeo M.

68

request.args 是一个 MultiDict 实例(MultiDictFlask 请求 API)。

request.args[key] ## returns a single value, the first if there are multiple
request.args.getlist(key) ## returns a list

如果您想提交比使用简单键值对编码更复杂的结构,请考虑发送JSON编码对象。
此外,请查看jQuery递归参数序列化pattern和可以反序列化它的jquery-unparam库。

7
如果所有变量都被传递为&var[]=1&var[]=2...,那么getlist函数可以帮助处理。在这种情况下,您可以简单地使用request.args.getlist('var[]')。但是如果参数使用键进行传递:&var[0]=1&var[1]=2...,那么就会出现问题... - pilat
嗨...!!! 我一直在使用括号,但它一直无法正常工作。非常感谢你,因为这并不明显,现在它已经正常工作了 :) - Daniel Azamar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接