将django模板中的字符串渲染为json对象

时间:2015-10-21 18:32:53

标签: javascript django jinja2

我有一个角度应用程序,它将json数据发送到django后端。 django应用程序将json数据保存到数据库中,然后将其拉出以将其发送回角度应用程序。我无法让整个链条正常工作。

这是将json数据传递回模板的视图。

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

以上是在调用上面render()之前的formrecord.data:

(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;}};

JSON.parse(mydata)在JS方面给出了语法错误。我如何让JS正确地将字符串解析为JS对象?

2 个答案:

答案 0 :(得分:0)

mydata的值不是字符串,您不需要解析它,因为它已经是有效的JS对象:var mydata ={"user":{"firstName":"Bob","lastName":"Henderson",}};

您可以继续访问以下属性:mydata.user.firstName

此外,您应该验证您在模型中存储的JSON数据。您在上面发布的数据无效,因为在JSON中,尾随逗号是非法的。

答案 1 :(得分:0)

正如@Arsh Singh所说,formrecord.data不是有效的json,它对于python来说是有效的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>