javascript - 无法使用从 Django 发送到模板的字典

标签 javascript json django

我在 python 中有以下字典,我将其发送到模板:

mydict = {
    "ABC": {
        "target_weight": 1,
        "target_ra_weight": 2
    },
    "XYZ": {
        "target_weight": 3,
        "target_ra_weight": 4
    },
    "JKL": {
        "target_weight": 5,
        "target_ra_weight": 6
    }
}
return render(request, 'template.html', {'mydict': mydict})

我似乎无法将此分配给 javascript 变量并访问内容。我在模板的 javascript 部分尝试了以下所有方法:

var mydict = {{ mydict }};
> Uncaught SyntaxError: unexpected token {

var mydict = {{ mydict|safe }};
> Uncaught SyntaxError: unexpected token {

var mydict = {{ mydict|escapejs }};
> Uncaught SyntaxError: unexpected token {

以下允许我创建变量,但是当我尝试访问它时(例如:console.log(mydict)),然后出现错误:

var mydict = JSON.parse('{{ mydict }}');
console.log(mydict);
> Uncaught SyntaxError: unexpected token { in JSON at position 1
// same thing happens when using |safe or |escapejs

最佳答案

您需要 JSON,而不是字典。使用 json.dumps功能:

import json

mydict = {
    "ABC": {
        "target_weight": 1,
        "target_ra_weight": 2
    },
    "XYZ": {
        "target_weight": 3,
        "target_ra_weight": 4
    },
    "JKL": {
        "target_weight": 5,
        "target_ra_weight": 6
    }
}
return render(request, 'template.html', {'mydict': json.dumps(mydict)})

在模板中:

var mydict = JSON.parse('{{ mydict|safe }}');

关于javascript - 无法使用从 Django 发送到模板的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269314/

相关文章:

javascript - 对于较大的数组 - 返回 NaN 而不是数字

javascript - 如何在 JavaScript 中创建对象列表

python - Safari 不显示我的某些内容

django - 如何在现有 View 中使用 Django 密码验证?

python - 设置Django项目默认端口

javascript - Angular $watch 不触发数组更改

javascript - Redux reducer 的分支覆盖率

javascript - tf.browser.fromPixels() 不工作因为 "DOM is not ready yet"

javascript - 无法获取从 PHP 到 $.ajax 的 JSON 回显

json - 找不到play.api.libs.json.JsObject类型的Json序列化程序作为JsObject