2010-07-02 10 views
3

je fais la demande suivante par cURL ligne de commande:Django POST sous-dictionnaires

curl -X POST http://localhost:8000/api/places/ -vvvv -d "place[name]=Starbucks" 

Cependant, lorsque je tente d'accéder aux paramètres en appelant

request.POST.getlist('place') 

je reçois un vide tableau en réponse. Comment puis-je accéder au sous-dictionnaire que je peux ensuite passer à l'ORM?

Merci,

Jamie

+0

Qu'est-ce que request.POST ressemble ? – sdolan

+0

Répondre

7

éléments de données HTTP ne peuvent pas avoir des sous-éléments. Les données que vous avez affichées - comme indiqué dans le querydict - ont été interprétées comme un seul élément avec la clé "place [nom]" et la valeur "Starbucks". Donc, vous pouvez l'obtenir avec request.POST["place[name]"].

+0

Ah, c'est ce dont j'avais peur. Merci. Je viens d'un environnement PHP, donc je suis habitué à $ _POST ['place'] ['name']. Merci! –

0

Il semble que vous envoyez une chaîne, dans cette tentative de cas:

request.POST.get('place[name]') 

Si votre simulez une liste déroulante vous devez envoyer « place = Starbucks », si vous essayez d'envoyer un tableau vous devriez essayer de convertir votre chaîne en un tableau dans votre script python.

Dans votre commande, vous pouvez obtenir Chevauchée "POST -X" comme paramètre -d est déjà un HTTP POST:

curl --help 
... 
-d/--data <data> HTTP POST data (H) 

manuel curl: http://curl.haxx.se/docs/manual.html