将 Django 模板中的字符串呈现为 json 对象
Rendering a string in django template as json object
我有一个 angular 应用程序可以将 json 数据发送到 django 后端。 django 应用程序将 json 数据保存到数据库中,然后将其拉出以将其发送回 angular 应用程序。我无法让整个链正常工作。
此处是将 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 ={"user":{"firstName":"Bob","lastName":"Henderson"}};
JSON.parse(mydata) 在 JS 端给我一个语法错误。如何让 JS 将字符串正确解析为 JS 对象?
mydata
的值不是字符串,你不需要解析它,因为它已经是一个有效的JS对象:var mydata ={"user":{"firstName":"Bob","lastName":"Henderson",}};
您可以继续访问以下属性:mydata.user.firstName
此外,您应该验证存储在模型中的 JSON 数据。您在上面发布的数据无效,因为 JSON 结尾的逗号是非法的。
正如@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>
您必须在您的 JS 文件中使用“|safe”,如下所示:
观看次数
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|safe }};
console.log(mydata);
</script>
在js块中使用
<script>
var mydata = JSON.parse("{{formdata|escapejs}}");
console.log(mydata);
</script
我有一个 angular 应用程序可以将 json 数据发送到 django 后端。 django 应用程序将 json 数据保存到数据库中,然后将其拉出以将其发送回 angular 应用程序。我无法让整个链正常工作。
此处是将 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 ={"user":{"firstName":"Bob","lastName":"Henderson"}};
JSON.parse(mydata) 在 JS 端给我一个语法错误。如何让 JS 将字符串正确解析为 JS 对象?
mydata
的值不是字符串,你不需要解析它,因为它已经是一个有效的JS对象:var mydata ={"user":{"firstName":"Bob","lastName":"Henderson",}};
您可以继续访问以下属性:mydata.user.firstName
此外,您应该验证存储在模型中的 JSON 数据。您在上面发布的数据无效,因为 JSON 结尾的逗号是非法的。
正如@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>
您必须在您的 JS 文件中使用“|safe”,如下所示:
观看次数
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|safe }};
console.log(mydata);
</script>
在js块中使用
<script>
var mydata = JSON.parse("{{formdata|escapejs}}");
console.log(mydata);
</script