2010-08-07 2 views
0

J'ai une forme qui est similaire à ce qui suit:Pylons formencode - Comment afficher un tableau de données?

Enter Name: 
Enter Age: 
[add more] 

qui ajoutent plus de copies sur le terrain les entrées nom et l'âge et peut être cliqué autant de fois que l'utilisateur veut. Potentiellement, ils pourraient finir par soumettre 50 ensembles de données de nom et d'âge.

Comment puis-je gérer ces données reçues quand elles sont publiées dans mon application Pylons? J'ai fondamentalement besoin de faire quelque chose comme:

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

Je suis tombé sur la fonction variabledecode de formencode. Mais ne peut pas pour la vie de moi comprendre comment l'utiliser:/

Cheers.

Répondre

1

Vous posterais quelque chose comme ça (URL codé, bien sûr)

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

faire pour les utilisateurs 0-N, où N est autant d'utilisateurs que vous avez, zéro indexé. Puis, du côté Python après avoir exécuté cette grâce variabledecode, vous aurez:

users = UserSchema.to_python(request.POST) 
print users 

# prints this: 
{'Users': [{'name': 'John', 'age': '21'}, {'name': 'Mike', 'age': '30'}]} 

Les valeurs peuvent varier en fonction de la validation que vous avez passe dans votre schéma. Donc, pour obtenir ce que vous cherchez, alors vous feriez:

for user in users.iteritems(): 
    print "{name} {age}".format(**user) 

Mise à jour

Pour intégrer une liste dans un dictionnaire, vous feriez ceci:

users-0.name=John 
users-0.age=21 
users-0.hobbies-0=snorkeling 
users-0.hobbies-1=billiards 
users-1.name=Mike 
... 

Alors et ainsi de suite. Le motif se répète essentiellement: {name-N} intégrera le Nième index dans une liste, en commençant par 0. Assurez-vous qu'il commence par 0 et que les valeurs sont consécutives. Un . démarre le début d'une propriété, qui peut être un scalaire, une liste ou un dictionnaire.

Ceci est Pylons-specific documentation sur la façon d'utiliser formencode, regardez la table 6-3 pour un exemple.

+0

Cela semble assez simple ... Je vais jouer avec et voir ce qui se passe. Merci. – dave

+0

Oh, encore une chose. Comment pourrais-je utiliser cette méthode pour publier un tableau dans ce tableau? Dites, avec le nom et l'âge, l'utilisateur peut poster leurs passe-temps. Ils peuvent avoir X nombre de passe-temps ... Comment l'ajouteriez-vous? – dave

+0

J'ai mis à jour la réponse pour vous donner un exemple de la façon de le faire. –

Questions connexes