如何使用 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/