Django: восстановить структурированные параметры, отправленные через $ .post - PullRequest
2 голосов
/ 04 февраля 2011

Я отправляю запрос Ajax (с jQuery) со структурированными данными поста:

$.post(
    myUrl,
    {
         items: [{code: 'a', description: 'aaa'},
                {code: 'b', description: 'bbb'}]
    })

что я вижу в request.POST:

<QueryDict: {u'items[0][code]': [u'a'],
             u'items[0][description]': [u'aaa'],
             u'items[1][description]': [u'bbb'],
             u'items[1][code]': [u'b']}>

Как я могу обработатьзапрос на получение оригинала items?

(обратите внимание, что request.POST.get('items') не работает)

Ответы [ 2 ]

6 голосов
/ 04 февраля 2011

Я бы посоветовал вам опубликовать свой объект как JSON.В Django вы можете затем воссоздать структуру, проанализировав JSON в объектах python.

Опубликовать JSON с помощью jQuery

$.post(
    myUrl,
    JSON.stringify({
         items: [{code: 'a', description: 'aaa'},
                {code: 'b', description: 'bbb'}]
    })
)

Анализ JSON в представлении Django

from django.http import HttpResponse
from django.utils import simplejson

def my_view(request):
    if request.method == 'POST':
        json_data = simplejson.loads(request.raw_post_data)
        # json_data contains your objects
        print json_data['items']

    return HttpResponse("Got data")
5 голосов
/ 13 мая 2011

Я сделал специальную библиотеку для Django / Python для обработки структурированных данных, отправляемых через запросы. Вы можете найти его на GitHub здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...