![](/img/trans.png)
[英]Images slider with Django, Bootstrap, Javascript doesn't work properly
[英]Passing a JSON object from Django to Javascript doesn't work properly
我需要将 json object 传递给 Django 中的 javascript 脚本。我使用了此处描述的方法:
这是我的观点:
def test_json(request):
data = {}
data['key'] = 'value'
json_data = json.dumps(data)
return render(request, 'test_json.html', {'json_data':json_data})
还有我的模板:
{{ json_data|json_script:"json_data" }}
<script>
const mydata = JSON.parse(document.getElementById("json_data").textContent);
const keys = Object.keys(mydata);
console.log(keys);
</script>
但是控制台output是这样的:
[
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
]
就像它不识别键,但将 json object 的每个字符识别为键,就像不识别 JSON 结构。
如果我像这样更改模板中的脚本:
{{ json_data|json_script:"json_data" }}
<script>
// const mydata = JSON.parse(document.getElementById('json_data').textContent);
//const keys = Object.keys(mydata);
//console.log(keys)
let text = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
const obj = JSON.parse(text);
const keys1 = Object.keys(obj);
console.log(keys1)
</script>
Output:
[
"employees"
]
我正确地拿到了钥匙。 这就像在将 JSON 从 Django 提供给模板的过程中出现的问题。
有什么建议吗?
谢谢。
使用json_script过滤器时,无需先将 object 序列化为 JSON,过滤器会为您处理
看法
def test_json(request):
data = {'key': 'value'}
return render(request, 'test_json.html', {'data': data})
模板
{{ data|json_script:"json_data" }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.