Pylons formencode - 如何POST数据数组?
我有一个表单,结构大概是这样的:
Enter Name:
Enter Age:
[add more]
这个表单可以添加更多的字段,点击后会复制“姓名”和“年龄”的输入框,用户可以根据需要点击很多次。理论上,他们可能会提交多达50组“姓名”和“年龄”的数据。
当这些数据提交到我的Pylons应用时,我该如何处理这些接收到的数据呢?我基本上需要做的事情是:
for name, age in postedform:
print name + ' ' + age
我遇到了formencode的variabledecode函数,但我实在搞不懂该怎么用 :/
谢谢。
1 个回答
1
你可以像这样发送数据(当然要进行URL编码)
users-0.name=John
users-0.age=21
users-1.name=Mike
users-1.age=30
...
对用户从0到N进行处理,其中N是你拥有的用户数量,记得从0开始计数。然后,在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的Pylons特定文档,可以查看表6-3来获取示例。