Comment faire pour convertir un MultiDict imbriquées dictionnaire
Je voudrais convertir un POSTE de Webob MultiDict imbriquées dictionnaire. E. g.
Donc à partir d'un POSTE de:
'name=Kyle&phone.number=1234&phone.type=home&phone.number=5678&phone.type=work'
à un multidict;
[('name', 'Kyle'), ('phone.number', '1234'), ('phone.type', 'home'), ('phone.number', '5678'), ('phone.type', 'work')]
à un imbriquée dictionnaire
{'name': 'Kyle',
'phone': [
{
'number': '12345',
'type': 'home',
},{
'number': '5678',
'type': 'work',
},
Des idées?
MODIFIER
J'ai fini par l'extraction de la variable_decode
méthode de la formencode paquet que publiés par la Volonté.
Le seul changement qui a été requis est de rendre les listes explicites, E. g.
'name=Kyle&phone-1.number=1234&phone-1.type=home&phone-2.number=5678&phone-2.type=work'
Ce qui est mieux pour de nombreuses raisons.
- Jetez aussi un oeil à Poivre de la Pylônes projet: docs.pylonsproject.org/projects/peppercorn/en/latest il exige d'être plus explicite lors de la construction de vos formes, mais ne permettent arbitraire de nidification.
Vous devez vous connecter pour publier un commentaire.
Si vous avez formencode installé ou peuvent l'installer, la caisse de leur variabledecode module
Je n'ai pas eu le temps de le tester et c'est assez restrictif, mais j'espère que cela va fonctionner (je suis le seul à poster parce qu'il a été un moment depuis que vous avez posté la question):
Si ce n'est pas à 100%, il devrait au moins obtenir que vous un bon départ.
Espère que cette aide
Je préfère une manière explicite pour résoudre votre problème:
Diviser les membres qui appartiennent à la même structure (ou dict) dans un même groupe avec le même nom de champ, comme
L'ordre des champs dans le formulaire est garanti, de sorte que le multidict sera:
(('nom', 'Kyle'), ('phone1', '1234', 'accueil'), ('fixe2', '5678', 'travail'))
Le code sera comme: