2015-10-21 60 views
0

我有一個將json數據發送到django後端的角度應用程序。 django應用程序將json數據保存到數據庫中,然後將其拉出併發送回角度應用程序。我無法讓這整個鏈條正常工作。將django模板中的字符串呈現爲json對象

這裏是將json數據傳遞迴模板的視圖。

def myview(request, uid): 
    formrecord = FormData.objects.get(someid = uid) 
    return render(request, 'myview.html', 'formdata':formrecord.data}) 

這裏是formrecord.data樣子render()以上之前調用:

(Pdb) formrecord.data 
u'{"user":{"firstName":"Bob","lastName":"Henderson"}}' 

這裏是我的模板

<script> 
var mydata ={{ formdata }}; 
mydata = JSON.parse(mydata); 
console.log(mydata); 
</script> 

這裏是獲取呈現:

var mydata ={&quot;user&quot;:{&quot;firstName&quot;:&quot;Bob&quot;,&quot;lastName&quot;:&quot;Henderson&quot;}}; 

The JSON.parse(mydata)給了我一個JS端的語法錯誤。我如何讓JS將字符串正確解析成JS對象?

回答

0

mydata值不是一個字符串,你並不需要,因爲它已經是一個有效的JS對象來分析它:var mydata ={"user":{"firstName":"Bob","lastName":"Henderson",}};

您可以繼續訪問屬性,如:mydata.user.firstName

而且,您應該驗證您存儲在模型中的JSON數據。您在上面發佈的數據無效,因爲在JSON中,尾隨逗號是非法的。

0

正如@Arsh辛格說,formrecord.data不是有效json,咬它是蟒蛇有效dict,你可以嘗試這樣的:

# views 
import json 

def myview(request, uid): 
    formrecord = FormData.objects.get(someid = uid) 
    jsondata = json.dumps(formrecord.data) 
    return render(request, 'myview.html', 'formdata':jsondata}) 

然後在JS塊

<script> 
    var mydata ={{ formdata }}; 
    console.log(mydata); 
</script> 
+0

這是實際上不是有效的字典,它是一個字符串(表示無效的JSON)。 'json.dumps'會期望一個JSON可序列化的python對象,在這種情況下它是一個字符串,所以會打印出一個字符串(而不是JSON對象),並且mydata的值將是一個字符串:''{\ \ 「用戶\\」:{\\ 「名字\\」:\\ 「鮑勃\\」,\\ 「姓氏\\」:\\ 「亨德森\\」,}}「' –