javascript - Jinja2:如何创建多维 javascript 数组?

标签 javascript python flask jinja2

我正在使用 FlaskJinja2作为模板语言。

如何使用 Jinja2 将多维 Python 结构转换为 javascript 中的相应结构?

示例(Python/ flask ):

pyStruct = [{key1:value1, key2:value2, [{subkey1:subvalue1, subkey2:subvalue2,}]},
            {key1:value1, key2:value2, [{subkey1:subvalue1, subkey2:subvalue2,}]},]

render_template('jinjatemplate.html', pyStruct=pyStruct)

示例(Jinja2):

??

我想我想问的是,只能通过在 Jinja2 中创建复杂的循环结构来完成,还是我在某处缺少快捷方式?

如果答案是肯定的,必须在 Jinja2 中使用复杂的循环,那么直接在 python 中创建 javascript 代码并将其传递给 Jinja2 以包含在内可能要容易得多。

但这似乎在某种程度上违背了使用像 Jinja2 这样的模板语言的目的......

我试过(Jinja2):

{{ pyStruct|safe }}

...只要没有任何内容是 unicode,并且不会偏离 Ascii 领域(在我的情况下通常如此),这实际上就可以工作。

哦,如果您想知道为什么要传递这种结构?我发现我经常想将相当复杂的结构传递给 javascript,以供菜单和其他复杂的选择界面使用。

最佳答案

您可以使用 json 模块,作为 Jinja 过滤器或直接将 json.dumps() 的结果传递给您的模板。

pyStruct = [{key1:value1, key2:value2, [{subkey1:subvalue1, subkey2:subvalue2,}]},
            {key1:value1, key2:value2, [{subkey1:subvalue1, subkey2:subvalue2,}]},]

render_template('jinjatemplate.html', json_struct=json.dumps(pyStruct))

在模板中:

var myStruct = ({{ json_struct|e }});

警告:我对转义位(|e 过滤器)有点不确定。您可能想要检查 <、> 和 & 字符是否使用 unicode 转义序列而不是 xml 实体正确转义。

关于javascript - Jinja2:如何创建多维 javascript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609833/

相关文章:

python-3.x - Mongodb 文本搜索不适用于字符串 Flask

python - 使用 Flask 发送多个 CSV?

python - yaml 将字典加载为 jinja 模板中不带引号和括号的字符串

javascript - Yeoman 生成器运行异步最佳实践

javascript - 滚动到网页底部的书签

python - Bigquery : how to preserve nested data in derived tables?

python - 在Python中进行winsorize但忽略nan的正确方法

python 日志记录-额外​​参数的默认值

javascript - 定义一个已放入 Javascript 函数参数中的变量

javascript - 从 JS 数组中删除重复项