2016-07-07 6 views
1

私のオブジェクトはmysqlデータベースにオブジェクト(または文字列?私はわかりません)があり、それをビューでPython辞書に戻してから処理して戻したいhtmlへjson.loadsはdjangoで動作しません

{0:{u'loc ':[1]、[2]、u'pts

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は次のようになりますので、ここで

はviews.pyで私のコードです':[[456.45631334215614、1155.23758883418]、[1087.2590986710893、1175.6156203824098]、u'imsize':(3264,2448)}、9:{u'loc ':[1,2]、u'pts':[838.4383679397915 、[u'loc ':[1,2]、u'pts':[1544.854017880959,1041.081669022464]、[ 226.26099907645976,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は何ですか?あなたは「これのように見えますか? Managerから '.get()'クエリを実行すると、 'ClickedPts'クラスのオブジェクトインスタンスが得られます。文字列やdictや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オブジェクトのように見えます。この文字列をPython JSONオブジェクトに変換するには、ast.literal_evalを使用する方がよいでしょう。必要なものを得るには、json.loads(_ClickedPts)の代わりにast.literal_val(_ClickedPts)を呼び出してください。

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

+0

私はあなたが言ったことを試みましたが、まだ動作していません。 – KKlalala

関連する問題