Форменкод Pylons - Как мне разместить массив данных? - PullRequest
0 голосов
/ 07 августа 2010

У меня есть форма, похожая на следующую:

Enter Name:
Enter Age:
[add more]

При добавлении дополнительных полей копируются вводы имени и возраста, и их можно нажимать столько раз, сколько пользователь хочет. Потенциально они могли бы в конечном итоге представить 50 комплектов данных Имени и возраста.

Как я могу обрабатывать полученные данные, когда они публикуются в моем приложении Pylons? Мне нужно сделать что-то вроде:

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

Я сталкивался с функцией переменных-кодов formencode. Но я не могу понять, как его использовать: /

Приветствие.

1 Ответ

1 голос
/ 07 августа 2010

Вы бы опубликовали что-то вроде этого (конечно, закодированный 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 и значения являются последовательными. . запускает начало свойства, которое может быть скаляром, списком или словарем.

Это документация, относящаяся к пилонам того, как использовать formencode, для примера посмотрите таблицу 6-3.

...