0

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

Enter Name:
Enter Age:
[add more]

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

当收到的数据发布到我的 Pylons 应用程序时,我该如何处理?我基本上需要做类似的事情:

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

我遇到过formencode 的variabledecode 函数。但是我一生都无法弄清楚如何使用它:/

干杯。

4

1 回答 1

1

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

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

对用户 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 开始并且值是连续的。A.开始属性的开头,它可以是标量、列表或字典。

这是有关如何使用 formencode 的Pylons 特定文档,请查看表 6-3 示例。

于 2010-08-07T06:22:49.837 回答