her*_*ira 5 javascript python jinja2 flask
如何使用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)
Run Code Online (Sandbox Code Playgroud)
示例(Jinja2):
??
Run Code Online (Sandbox Code Playgroud)
我想我要问的是,它只能通过在Jinja2中创建复杂的循环结构来完成,还是我在某个地方错过了一个快捷方式?
如果答案是,是的,必须在Jinja2中使用复杂的循环,那么直接在python中创建javascript代码并将其传递给Jinja2以包含它可能要容易得多.
但这似乎打败了使用像Jinja2这样的模板语言的目的......
我试过(Jinja2):
{{ pyStruct|safe }}
Run Code Online (Sandbox Code Playgroud)
...这实际上只要没有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))
Run Code Online (Sandbox Code Playgroud)
在模板中:
var myStruct = ({{ json_struct|e }});
Run Code Online (Sandbox Code Playgroud)
警告:我对转义位(| e过滤器)有点不确定.您可能希望检查<,>,&字符是否使用unicode转义序列而不是xml实体正确转义.
| 归档时间: |
|
| 查看次数: |
5142 次 |
| 最近记录: |