4

如何将字典从 Jinja2(使用 Python)传递到 Javascript?我在 Python 中有字典,当我渲染模板时,我需要将字典与 Javascript 一起使用,我从 Python 传递

template = JINJA_ENVIRONMENT.get_template('sm.html')
self.response.write(template.render(values=values))

但是如何将它们存储在 html 页面内的 Javascript 变量中。

4

2 回答 2

5

使用该json模块将 Python 数据转换为 JSON 数据;JSON 是 JavaScript *的一个子集,可以作为 JavaScript 文字使用:

import json

js_value = json.dumps(python_value)

js_value并在模板中渲染。

如果您也需要 JSON 数据是HTML 安全的,则需要添加一些替换:

js_value = (json.dumps(python_value)
    .replace(u'<', u'\\u003c')
    .replace(u'>', u'\\u003e')
    .replace(u'&', u'\\u0026')
    .replace(u"'", u'\\u0027'))

* JSON 允许JavaScript 文字不能包含的U+2028 和 U+2029 字符json.dumps(),但该函数默认转义所有非 ASCII 代码点,所以只要你不禁用ensure_ascii你就可以了。

于 2013-11-10T00:38:49.810 回答
1

您想将其存储为Json。这是 javascript 的本机格式,因此您可以将其直接传递给变量。

于 2013-11-10T00:38:33.783 回答