В настоящее время я работаю над проектом с использованием javascript и python с плагином Jquery Datatables и Django. Моя проблема в том, что я пытаюсь создать словарь в Python, который затем я хочу выполнить json.dumps (словарь), чтобы отправить его в JQuery.
Преобразование выполнено, и я могу с помощью отладчика просмотреть данные в коде JQuery / Javascript, однако он не заполняет мою таблицу, поскольку JSON искажен. Я считаю, что это связано с тем, как создается словарь в коде Python. Я знаю, что делаю что-то не так на этом этапе. Все примеры, которые я видел, показывают жестко закодированный словарь, который мне нужен для динамического создания словаря. Вот код, который я использую в Python. Если кто-то знает, что я делаю неправильно, пожалуйста, дайте мне знать, что это сводит меня с ума. Это последняя перестановка словарного кода: -
dictionary = {}
array = []
status = 'OFF'
for item in self.scanResults:
if item[6]:
status = 'ON'
else:
status = 'OFF'
array.append( {'MAC_ADDRESS':item['mac_addr'],
'IP_ADDRESS':item['ip_addr'],
'NAME':item['name'],
'OS':item['os'],
'OS_VERSION':item['os_version'],
'WORKGROUP':'--',
'STATUS':status
})
dictionary = dict({'aaData': array})
JSON на стороне JQuery должен иметь следующий формат: -
{"aaData": [[..,..,..,..,],[..,..,..,..]]}
Приветствия за любую помощь, которую вы можете предоставить
Chris
EDIT:
Дополнительная информация. Извините, что не включил его раньше.
Я кодирую это следующим образом: -
return HttpResponse (simplejson.dumps (response_dict), mimetype = 'application / javascript')
Дамп результатов на экране: -
{"aaData": [{"STATUS": "ON", "WORKGROUP": "-", "IP_ADDRESS": "192.168.0.2", "OS_VERSION": "8.04", "MAC_ADDRESS": " 00: 10: e3: 42: 16: 35 "," OS ":" Linux "," NAME ":" Machine_One "}, {" STATUS ":" ON "," WORKGROUP ":" - "," IP_ADDRESS ":" 192.168.0.3 "," OS_VERSION ":" 8.04 "," MAC_ADDRESS ":" 00: 19: a3: 41: 16: 31 "," OS ":" Linux "," NAME ":" Machine_Two "} , {"STATUS": "ON", "WORKGROUP": "-", "IP_ADDRESS": "192.168.0.4", "OS_VERSION": "8.04", "MAC_ADDRESS": "00: 19: b3: 43: 16:32 "," OS ":" Linux "," NAME ":" Machine_Three "}, {" STATUS ":" ON "," WORKGROUP ":" - "," IP_ADDRESS ":" 192.168.0.5 ", "OS_VERSION": "8.04", "MAC_ADDRESS": "00: 19: c3: 44: 16: 33", "OS": "Linux", "NAME": "Machine_Four"}, {"STATUS": "ON "," WORKGROUP ":" - "," IP_ADDRESS ":" 192.168.0.6 "," OS_VERSION ":" 8.04 "," MAC_ADDRESS ":" 00: 19: d3: 45: 16: 34 "," OS " : "Linux", "NAME": "Machine_Five"}, {"STATUS": "ON", "WORKGROUP": "-", "IP_ADDRESS": "192.168.0.7", "OS_VERSION": "8.04", "MAC_ADDRESS": "00: 19: e3: 46: 16: 37", "OS": "Linux", "NAME": "Machine_Six"}, {"STAT US ":" ON "," WORKGROUP ":" - "," IP_ADDRESS ":" 192.168.0.8 "," OS_VERSION ":" 8.04 "," MAC_ADDRESS ":" 00: 19: f3: 47: 16: 38 "," OS ":" Linux "," NAME ":" Machine_Seven "}, {" STATUS ":" ON "," WORKGROUP ":" - "," IP_ADDRESS ":" 192.168.0.9 "," OS_VERSION " : "8.04", "MAC_ADDRESS": "00: 19: g3: 48: 16: 38", "OS": "Linux", "NAME": "Machine_Eight"}, {"STATUS": "ON", " WORKGROUP ":" - "," IP_ADDRESS ":" 192.168.0.10 "," OS_VERSION ":" 8.04 "," MAC_ADDRESS ":" 00: 19: h3: 49: 16: 41 "," OS ":" Linux "," NAME ":" Machine_Nine "}]}
Фактические ожидаемые результаты будут: -
{"aaData": [["ON", "-", "192.168.0.6", "8.04", "00: 19: d3: 45: 16: 34", "Linux", "Machine_Five" ],
["ON", "-", "192.168.0.6", "8.04", "00: 19: d3: 45: 16: 34", "Linux", "Machine_Five"]]}
Просто чтобы дать вам представление.
Для этого я использую плагин jQuery DataTables. Я считаю, что проблема в неправильном словаре, т. Е. Моя вина. Я новичок в python, пробовал многочисленные перестановки словарей и обнаружил более 10 способов не делать этого, мне просто нужен намек на этот неуловимый правильный путь.
Ура снова
Chris
РЕШИТЬ:
Я решил проблему, передав обратно с сервера массив массивов (список списков), если вы предпочитаете, и анализируя их на стороне клиента из-за фиксированного размера списков, это не вызывает проблем с производительностью. Я рассмотрим это более подробно позже и опубликую лучшее решение или более элегантное решение.