如何将字典从 Jinja2(使用 Python)传递给 Javascript?

Dam*_*mir 4 javascript python templates jinja2

如何将字典从 Jinja2(使用 Python)传递给 Javascript?我有 Python 字典,当我渲染模板时,我需要在 Javascript 中使用该字典,我是从 Python 传递过来的

template = JINJA_ENVIRONMENT.get_template('sm.html')
self.response.write(template.render(values=values))
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 5

使用json模块将Python数据转化为JSON数据;JSON 是 JavaScript * 的一个子集,作为 JavaScript 文字效果很好:

import json

js_value = json.dumps(python_value)
Run Code Online (Sandbox Code Playgroud)

并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'))
Run Code Online (Sandbox Code Playgroud)

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