Django: чтение массива объектов JSON из QueryDict

Как мне передать составную структуру JSON через вызов AJAX из JS и на стороне сервера прочитать ее как «очень похожую» структуру данных в python?

] Я понимаю, что можно использовать форматирование json (simplejson и т. д.), но мне почему-то кажется, что сам QueryDict искажен или переформатирован в моем случае?

Пример:

При передаче массива объектов JSON [{"id" : 1},{"id": 2},{"id": 3}] через AJAX в представление Django, QueryDict форматируется следующим образом:

POST:<QueryDict: {u'json_data[0][id]': [u'1'], u'type': [u'clone'], 
u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'], 
u'json_data[1][id]': [u'2'], u'json_data[2][id]': [u'3']}>

Как мне вообще перебирать json_data?

Я хочу вместо этого получите что-то вроде этого:

POST:<QueryDict: {u'json_data': [{u'id': [u'1']}, {u'id': [u'2']}, {u'id': [u'3']}]},
u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'], u'type': [u'clone']>

Чтобы я мог получить доступ к QueryDict как к словарю и получить json_data как список и обработать его в определенном порядке: возможно, просто перебрать их в последовательном порядке списка. Что-то вроде:

ret = request.POST
for item in ret['json_data']:
    process(item['id'])

На самом деле значение, которое передается в process(), может быть другим словарем пар ключ-значение, а не просто числом (1,2,3 и т. д.)

Javascript:

var test = [{"id": 1},{"id": 2},{"id": 3}];
$.post(
    "/insert_tc",
    {
      json_data: test,
      "type": 'clone',
      "csrfmiddlewaretoken": $csrf_token
    },  
    function(json) {
        //CALLBACK
    },
    "json"
);  

views.py:

def insert_tc(request):
    if request.method == 'POST':       
    ret = request.POST
    type = ret['type']
    list = ret.getlist(ret)

Но список возвращается пустым []

Я пробовал дампы, загрузки, элементы, методы get в simplejson, но ни один из них не помог.

Я даже попробовал jQuery.param( obj, true ), но это не то, что мне нужно (хотя и близко).

Есть ли другой/лучший способ передачи составных структур данных туда и обратно Django <-> JS через AJAX?

12
задан rajivRaja 5 April 2012 в 20:36
поделиться