无法使用从Django发送到模板的dict

时间:2016-09-01 10:38:37

标签: javascript json django

我在python中有以下dict,我发送到模板:

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

1 个答案:

答案 0 :(得分:3)

你需要JSON,而不是dict。使用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 }}');
相关问题