2016-07-07 67 views
1

我在我的mysql數據庫中有一個對象(或字符串?我不確定..),我想把它變回到視圖中的python字典,然後處理它,然後發回到html。json.loads在django中不工作

所以這裏是我在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,2488)},9:{u'loc':[1,2],u'pts':[[838.4383679397915 (3264,2488)},28:{u'loc':[1,2],u'pts':[[1544.854017880959,1041.081669022464],[[1584.854017880959,1041.081669022464],[ 2262.6099907645976,104.953878976804]],u'imsize':(3264,2488)},14:{ u'loc':[1,2],u'pts':[[1122.5721676687076,1211.5634319190933],[2053.740361759838,1221.0344281491446]],u'imsize':(3264,2488)},15:{u'loc': [1,2],u'pts ':[[1037.1904375418785,1166.702956796377],[1959.451782586886,1190.2974020603272],u'imsize':(3264,2448)}}

+0

什麼是你的數據庫?你從哪裏得到「看起來像這樣」?當你從Manager執行'.get()'查詢時,你會得到'ClickedPts'類的對象實例,而不是字符串或字典或JSON,這就是爲什麼你不能應用'.loads()'函數。 – Gocht

+0

'_clickedPts'是什麼類型? _clickedPts-looks-like - 這看起來像一個Python字典。但是你不能從django-db獲得python字典。 – Daniel

+0

@Gocht我使用的是mysql,我從另一個一般的python文件中獲取上面的_clickedPts,我連接到我的數據庫並獲取它。如果它是一個實例,我應該如何將其更改爲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將此字符串轉換爲Python JSON對象會更好。只需調用ast.literal_val(_ClickedPts)而不是json.loads(_ClickedPts)即可獲得所需內容。

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

+0

我試過你說的,但仍然無法正常工作。 – KKlalala