Python 挂架formencode-如何发布数据数组?

Python 挂架formencode-如何发布数据数组?,python,arrays,pylons,formencode,Python,Arrays,Pylons,Formencode,我有一个类似于以下的表格: Enter Name: Enter Age: [add more] “添加更多”字段将复制名称和年龄输入,并可根据用户需要单击任意次数。他们最终可能会提交50组姓名和年龄数据 当收到的数据发布到我的挂架应用程序时,我如何处理这些数据?我基本上需要做一些事情,比如: for name, age in postedform: print name + ' ' + age 我遇到了formencode的variabledecode函数。但我一辈子都不知道如何使用它

我有一个类似于以下的表格:

Enter Name:
Enter Age:
[add more]
“添加更多”字段将复制名称和年龄输入,并可根据用户需要单击任意次数。他们最终可能会提交50组姓名和年龄数据

当收到的数据发布到我的挂架应用程序时,我如何处理这些数据?我基本上需要做一些事情,比如:

for name, age in postedform:
   print name + ' ' + age
我遇到了formencode的variabledecode函数。但我一辈子都不知道如何使用它:/


干杯。

您可能会发布类似的内容(当然是URL编码的)

对用户0-N执行此操作,其中N是您拥有的用户数,索引为零。然后,在Python端,通过
variabledecode
运行此操作后,您将有:

users = UserSchema.to_python(request.POST)
print users

# prints this:
{'Users': [{'name': 'John', 'age': '21'}, {'name': 'Mike', 'age': '30'}]}
根据您在模式中进行的验证,这些值可能会有所不同。因此,要获得您想要的,您需要:

for user in users.iteritems():
  print "{name} {age}".format(**user)
更新

要在字典中嵌入列表,可以执行以下操作:

users-0.name=John
users-0.age=21
users-0.hobbies-0=snorkeling
users-0.hobbies-1=billiards
users-1.name=Mike
...
诸如此类。模式基本上是重复的:
{name-N}
将在列表中嵌入第N个索引,从0开始。确保它以0开头,并且值是连续的。
启动属性的开头,属性可以是标量、列表或字典


这是关于如何使用formencode的示例,请参见表6-3。

这看起来很简单。。。我来玩玩,看看会发生什么。谢谢。哦,还有一件事。如何使用此方法在该数组中发布数组?比如,除了姓名和年龄,用户还可以发布他们的爱好。他们可以有X个爱好。。。你会如何添加它?我已经更新了答案,给你一个如何添加的例子。
users-0.name=John
users-0.age=21
users-0.hobbies-0=snorkeling
users-0.hobbies-1=billiards
users-1.name=Mike
...