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}は、0 から始まる N 番目のインデックスをリストに埋め込みます。0 から始まり、値が連続していることを確認してください。A.は、スカラー、リスト、またはディクショナリのプロパティの開始を開始します。

これは、formencode の使用方法に関する Pylons 固有のドキュメントです。例については、表 6-3 を参照してください。

于 2010-08-07T06:22:49.837 に答える