2016-07-07 2 views
1

У меня есть объект (или строка? Я не уверен ..) в моей базе данных MySQL, и я хочу, чтобы включить его в словарь питона в представлениях, а затем обработать его, а затем отправить обратно к html.json.loads не работает в Джанго

так вот мой код в views.py:

def measure_detail(request, measurement_id): 

     _ClickedPts = ClickedPts.objects.get(measurement=measurement_id) 

     _ClickedPts = json.loads(_ClickedPts) 

     return render(request, 'measurement_detail.html', {'measurement': _measurement, 'clicked_pts': _ClickedPts}) 

_clickedPts выглядит следующим образом:

{0: {u'loc ': [1, 2], u'pts ': [[+456,45631334215614, 1155,23758883418], [1087,2590986710893, +1175,6156203824098]], u'imsize': (3264, 2448)}, 9: {u'loc ': [1, 2], u'pts': [[+838,4383679397915 , 1183,738210969312], [+1751,0879501479042, +1179,0747927841176]], u'imsize ': (3264, 2448)}, 28: {u'loc': [1, 2], u'pts': [[1544,854017880959, 1041,081669022464], [ 2262.6099907645976, 1044.953878976804]], u'imsize ': (3264, 2448)}, 14: { u'loc ': [1, 2], u'pts': [[+1122,5721676687076, 1211,5634319190933], [2053,740361759838, +1221,0344281491446]], u'imsize ': (3264, 2448)}, 15: {u'loc': [1, 2], u'pts ': [[+1037,1904375418785, +1166,702956796377], [1959,451782586886, +1190,2974020603272]], u'imsize': (3264, 2448)}}

+0

Что вы DB? Откуда у вас это получается? Когда вы выполняете запрос '.get()' от Менеджера, вы получаете экземпляр объекта класса 'ClickedPts', а не строку или dict или json, поэтому вы не можете использовать функцию' .loads() '. – Gocht

+0

Какой тип '_clickedPts'? _clickedPts-look-like-this выглядит как словарь python. Но вы не можете получить словари python из django-db. – Daniel

+0

@Gocht Я использовал mysql, и я получил _clickedPts выше из другого общего файла python, где я подключаюсь к моей базе данных и получаю его. Если это экземпляр, как мне его изменить на словарь python? – KKlalala

ответ

0

Следующий код работает:

test = ClickedPts.objects.values('pts') 

test = test[0]['pts'] 

test = ast.literal_eval(test) 

#print type(test) 
#print test 
1

Ваша строка не является надлежащим JSON, и на самом деле выглядит как объект Python JSON. Вам лучше было бы использовать ast.literal_eval для преобразования этой строки в объект JSON Python. Просто вызовите ast.literal_val (_ClickedPts) вместо json.loads (_ClickedPts), чтобы получить то, что вы хотите.

https://docs.python.org/2/library/ast.html#ast.literal_eval

+0

Я пробовал то, что вы сказали, но все еще не работает. – KKlalala

Смежные вопросы