2015-10-21 59 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的值将是一个字符串:''{\ \ “用户\\”:{\\ “名字\\”:\\ “鲍勃\\”,\\ “姓氏\\”:\\ “亨德森\\”,}}“' –