Jinja2:如何创建多维javascript数组?
我使用with作为模板语言 如何使用Jinja2将多维Python结构转换为javascript中的相应结构 示例(Python/Flask): 示例(Jinja2): 我想我要问的是,这只能通过在Jinja2中创建复杂的循环结构来实现,还是我遗漏了一条捷径 如果答案是肯定的,那么必须在Jinja2中使用卷积循环,那么直接在python中创建javascript代码并将其传递给Jinja2以供包含可能会容易得多 但这似乎有点违背了使用Jinja2这样的模板语言的目的 我试过(Jinja2): …只要没有任何东西是unicode,并且没有偏离Ascii区域(在我的例子中通常是这样),这实际上是可行的Jinja2:如何创建多维javascript数组?,javascript,python,flask,jinja2,Javascript,Python,Flask,Jinja2,我使用with作为模板语言 如何使用Jinja2将多维Python结构转换为javascript中的相应结构 示例(Python/Flask): 示例(Jinja2): 我想我要问的是,这只能通过在Jinja2中创建复杂的循环结构来实现,还是我遗漏了一条捷径 如果答案是肯定的,那么必须在Jinja2中使用卷积循环,那么直接在python中创建javascript代码并将其传递给Jinja2以供包含可能会容易得多 但这似乎有点违背了使用Jinja2这样的模板语言的目的 我试过(Jinja2): …
哦,如果你想知道为什么要通过这种结构?我发现我经常想将相当复杂的结构传递给javascript,以供菜单和其他复杂的选择界面使用。使用json序列化它:
from django.utils import simplejson
pyStruct = [{'key1':'value1',
'key2':'value2',
'key3':[{'subkey1':'subvalue1', 'subkey2':'subvalue2'}]},
{'key1':'value1',
'key2':'value2',
'key3':[{'subkey1':'subvalue1', 'subkey2':'subvalue2'}]}]
print simplejson.dumps(pyStruct)
Flask可能有一种等效的json序列化数据的方法。这个也可以使用jinja2中的循环构造来完成,但是比使用json慢很多倍。您可以使用
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实体正确转义
from django.utils import simplejson
pyStruct = [{'key1':'value1',
'key2':'value2',
'key3':[{'subkey1':'subvalue1', 'subkey2':'subvalue2'}]},
{'key1':'value1',
'key2':'value2',
'key3':[{'subkey1':'subvalue1', 'subkey2':'subvalue2'}]}]
print simplejson.dumps(pyStruct)
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 }});