Pylons formencode - 如何发布数据数组?

时间:2010-08-07 06:08:34

标签: python arrays pylons formencode

我有一个类似于以下内容的表单:

Enter Name:
Enter Age:
[add more]

添加更多字段会复制名称和年龄输入,并且可以根据用户的需要单击多次。他们最终可能会提交50套名称和年龄数据。

如何将收到的数据发布到我的Pylons应用程序中时如何处理?我基本上需要做一些事情:

for name, age in postedform:
   print name + ' ' + age

我遇到过formencode的variabledecode函数。但不能为我的生活弄清楚如何使用它:/

干杯。

1 个答案:

答案 0 :(得分:1)

你会发布这样的东西(当然是URL编码的)

users-0.name=John
users-0.age=21
users-1.name=Mike
users-1.age=30
...

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

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开头并且值是连续的。 .启动属性的开头,可以是标量,列表或字典。

这是Pylons-specific documentation如何使用formencode,请查看表6-3的示例。