将字典从视图传递到模板时如何处理撇号?

How to deal with apostrophe when passing dicts from view to template?

我正在尝试将一些字典从视图传递到模板中的 javascript。

view.py 中的数据如下所示:

node_result = [{'y': 0.40750126710593004, 'x': 1}, {'y': 1.0, 'x': 0}, {'y': 0.10288900152052712, 'x': 0}]
edge_result = [{'source': {'y': 0.40750126710593004, 'x': 1}, 'target': {'y': 0.40750126710593004, 'x': 1}}]

在我的模板中,我是这样检索的:

var nodes = {{node_result}};

var links = {{edge_result}};

但是,当我使用浏览器检查 javascript 时,我得到了这个错误:

很明显,撇号有问题,那么我该如何转移字典呢?

注意:当我直接在 javascript

中复制+粘贴字典时,这会起作用

您需要先将字典转换为 JSON:

json.dumps(node_result))

然后在您的模板中关闭自动转义:

{% autoescape off %}
var nodes = {{node_result}};
var links = {{edge_result}};
{% endautoescape %}

你也可以这样做:

var nodes = {{ node_result|safe }};
var links = {{ edge_result|safe }};

文档https://docs.djangoproject.com/en/1.8/ref/templates/builtins/