Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jinja2:如何创建多维javascript数组?_Javascript_Python_Flask_Jinja2 - Fatal编程技术网

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

Jinja2:如何创建多维javascript数组?,javascript,python,flask,jinja2,Javascript,Python,Flask,Jinja2,我使用with作为模板语言 如何使用Jinja2将多维Python结构转换为javascript中的相应结构 示例(Python/Flask): 示例(Jinja2): 我想我要问的是,这只能通过在Jinja2中创建复杂的循环结构来实现,还是我遗漏了一条捷径 如果答案是肯定的,那么必须在Jinja2中使用卷积循环,那么直接在python中创建javascript代码并将其传递给Jinja2以供包含可能会容易得多 但这似乎有点违背了使用Jinja2这样的模板语言的目的 我试过(Jinja2): …

我使用with作为模板语言

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

示例(Python/Flask):

示例(Jinja2):

我想我要问的是,这只能通过在Jinja2中创建复杂的循环结构来实现,还是我遗漏了一条捷径

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

但这似乎有点违背了使用Jinja2这样的模板语言的目的

我试过(Jinja2):

…只要没有任何东西是unicode,并且没有偏离Ascii区域(在我的例子中通常是这样),这实际上是可行的


哦,如果你想知道为什么要通过这种结构?我发现我经常想将相当复杂的结构传递给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 }});