Parsing json object отправлен с использованием метода Ajax GET в Django

Я создал запрос Ajax, который должен обрабатываться Django:

var tracks = [{'artist':'xxx', 'track':'yyy', 'duration':100}, {'artist':'xxx', 'track':'yyy', 'duration':100}, {'artist':'xxx', 'track':'yyy', 'duration':100}]; $.ajax({ type: 'GET', url: ROOT_URL + '/snv/', data: {tracks: tracks}, dataType: 'json' }).done(function (data) { // do something }).fail(function (data) { // do something else }); 

и у меня есть функция Python для извлечения этих данных:

 def snv(request): for track in request.GET: print track 

Но эта функция печатает что-то вроде:

 tracks[1][artist] tracks[0][track] tracks[0][duration] tracks[2][artist] tracks[1][track] tracks[1][duration] tracks[2][duration] tracks[0][artist] tracks[2][track] 

Если я распечатаю request.GET я получаю следующее:

 <QueryDict: {u'tracks[1][artist]': [u'Artist 02'], u'tracks[0][track]': [u'title 00'], u'tracks[0][duration]': [u'202'], u'tracks[2][artist]': [u'Artist 04'], u'tracks[1][track]': [u'title 02'], u'tracks[1][duration]': [u'506'], u'tracks[2][duration]': [u'233'], u'tracks[0][artist]': [u'Artist 00'], u'tracks[2][track]': [u'title 04']}> 

Как правильно обработать мой объект?

  • Не найдено ни одного модуля с именем zlib
  • Обратный вызов функции python из Tkinter Tcl в Windows
  • Вывести / развернуть jupyter cell в новое окно браузера
  • python суммирует значения списков списка
  • Сортировка баллов и названий в алфавитном порядке, в среднем, от наивысшего до самого низкого
  • сценарий fruityloops или причина пропеллера из VB или Python?
  • Облачный хостинг Python, отличный от Google App Engine?
  • как читать файл, который может быть сохранен как ansi или unicode в python?
  • 2 Solutions collect form web for “Parsing json object отправлен с использованием метода Ajax GET в Django”

    Вы можете решить эту проблему с помощью json-кодирования:

    кодировать в javascript

     data: {tracks: JSON.stringify(tracks)} 

    декодировать в представлении

     tracks = json.loads(request.POST.get('tracks')) 

    Таким образом, вы избегаете стороннего парсера 🙂

    Хорошо, я решил это так:

    изменил мой запрос Ajax с GET на POST,
    после этого, чтобы получить CSRF_token,
    использовал этот синтаксический анализатор для анализа моего объекта,
    и, наконец, изменил мою функцию Python:

     from django.views.decorators.csrf import csrf_exempt @csrf_exempt def startNewVoting(request): from querystring_parser import parser p = parser.parse(request.POST.urlencode()) for key, track in p['tracks'].iteritems(): print track # save to db... 
    Python - лучший язык программирования в мире.