POST请求多维数组我有一个是发送具有多维数组POST请求一个jquery客户端,这样的事情:雷丁从在Django
friends[0][id] 12345678 friends[0][name] Mr A friends[1][id] 789 friends[1][name] Mr B
即,两个阵列项目,名称和ID。
是否有自动的方式来接收这个输入作为列表或字典?我似乎无法使.getlist工作
POST请求多维数组我有一个是发送具有多维数组POST请求一个jquery客户端,这样的事情:雷丁从在Django
friends[0][id] 12345678 friends[0][name] Mr A friends[1][id] 789 friends[1][name] Mr B
即,两个阵列项目,名称和ID。
是否有自动的方式来接收这个输入作为列表或字典?我似乎无法使.getlist工作
这与that question有关。如上所述,我为Django/Python制作了特殊的库来处理通过请求发送的多维数组。你可以在GitHub here上找到它。
谢谢伯尼。我最终做了赫尔曼的建议,但我认为这个解决方案更清洁.. – Liorsion 2011-05-14 07:33:37
伟大的图书馆!谢谢! – kronosapiens 2015-05-07 21:51:46
这是否有帮助? http://dfcode.com/blog/2011/1/multi-dimensional-form-arrays-and-django/
如果你想POST数据,得到它是指定准确的“名称”唯一的办法你正在寻找:
person[1].name = request.POST['person[1][name]'] person[1].age = request.POST['person[1][age]'] person[2].name = request.POST['person[2][name]'] person[2].age = request.POST['person[2][age]']
这里是一个快速的即时变通方法Python的,当你有需要,而不明确地输入全名作为一个字符串来提取表单值:
person_get = lambda *keys: request.POST[ 'person' + ''.join(['[%s]' % key for key in keys])]
现在,当你需要的信息,扔在这些吸盘之一,你将有更广泛的灵活性。简单的例子:
person[1].name = person_get('1', 'name') person[1].age = person_get('1', 'age') person[2].name = person_get('2', 'name') person[2].age = person_get('2', 'age')
DrMeers'链接不再有效,所以我会后达到同样的事情的另一种方法。这也不是完美的,如果Django内置了这样的函数会更好。但是,因为它不:
Converting Multi-dimensional Form Arrays in Django
免责声明:我写的文章。它的实质是在这个功能,这可能是更强大的,但它工作在一个级别的对象数组:
def getDictArray(post, name):
dic = {}
for k in post.keys():
if k.startswith(name):
rest = k[len(name):]
# split the string into different components
parts = [p[:-1] for p in rest.split('[')][1:]
print parts
id = int(parts[0])
# add a new dictionary if it doesn't exist yet
if id not in dic:
dic[id] = {}
# add the information to the dictionary
dic[id][parts[1]] = post.get(k)
return dic
谢谢赫尔曼..不*完全*我需要什么,但足够接近。我认为一个更准确的结果会返回一个字典列表,而不是字典字典,但它或多或少是相同的。再次谢谢你! – Liorsion 2011-04-02 11:18:15
非常简单 - 谢谢! – 2013-05-31 06:55:59
@Liorsion:通过用“return [item for key,item in sorted(dic.items())]”替换最后一行,您将有相应的列表作为返回对象。 – 2013-05-31 07:38:50
向我们展示jQuery代码。这不是HTTP POST中多值元素的正常格式。 – 2011-03-02 16:09:57
感谢丹尼尔 - 请参阅DrMeers的回答下面,它显示我遇到的问题,但我正在寻找更好的解决方案.. – Liorsion 2011-03-06 07:37:31