Django: Czytanie tablicy obiektów JSON z QueryDict

Jak przekazać złożoną strukturę JSON przez wywołanie AJAX z JS i po stronie serwera, przeczytaj to jako „bardzo podobną” strukturę danych w Pythonie?

Rozumiem, że można użyć formatowania json (simplejson itp.), Ale jakoś czuję, że sam QueryDict jest zniekształcony lub sformatowany w moim przypadku?

Przykład:

Podczas przekazywania tablicy obiektów JSON [{"id": 1}, {"id": 2}, {"id": 3}] przez AJAX do widoku Django, QueryDict zostaje sformatowany jako:

<code>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']}>
</code>

Jak mogę nawet iterować przez json_data?

Chcę zamiast tego uzyskać coś takiego:

<code>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']>
</code>

Aby móc uzyskać dostęp do QueryDict jako słownika i pobrać json_data jako listę i przetworzyć go w określonej kolejności: może po prostu iteracyjnie je przeglądać w kolejności na liście. Coś jak:

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

W rzeczywistości wartość przechodząca do procesu () może być innym słownikiem par kluczowych wartości zamiast tylko liczby (1,2,3 itd.)

Javascript:

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

views.py:

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

Ale lista zwraca puste []

Próbowałem wysypisk, ładunków, przedmiotów, metod, ale żadna z nich nie pomogła.

Próbowałem nawet jQuery.param (obj, true), ale to nie jest to, czego chcę (choć nieco blisko).

Czy istnieje inny / lepszy sposób przekazywania złożonych struktur danych tam iz powrotem Django <-> JS za pośrednictwem AJAX?

questionAnswers(2)

yourAnswerToTheQuestion