Django POST под-словари - PullRequest
3 голосов
/ 02 июля 2010

Я делаю следующий запрос через командную строку cURL:

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

Однако, когда я пытаюсь получить доступ к параметрам, вызывая

request.POST.getlist('place')

В ответ я получаю пустой массив. Как я могу получить доступ к под-словарю, который я могу затем передать ORM?

Спасибо

Jamie

Ответы [ 2 ]

7 голосов
/ 02 июля 2010

Элементы данных HTTP не могут иметь подэлементов. Данные, которые вы разместили - как показано в запросе - были интерпретированы как один элемент с ключом «place [name]» и значением «Starbucks». Таким образом, вы можете получить его с request.POST["place[name]"].

0 голосов
/ 02 июля 2010

Похоже, что вы отправляете строку, в этом случае попробуйте:

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

Если вы имитируете выпадающий список, вы должны отправить «place = Starbucks», однако, если вы пытаетесь отправить массив, вы должны попытаться преобразовать вашу строку в массив внутри скрипта Python.

В вашей команде вы можете использовать "-X POST", так как параметр -d уже является HTTP POST:

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

Руководство по скручиванию: http://curl.haxx.se/docs/manual.html

...