如何把数组在属性是可读的javascript使用jinja2和谷歌应用引擎

how to put array in attribute to be readable by javascript using jinja2 and google app engine

本文关键字:jinja2 使用 javascript 谷歌 引擎 应用 数组 属性      更新时间:2023-09-26

我试图把数组从服务器到网页通过jinja2在谷歌应用程序引擎,但我似乎不能得到它,所以它是由我的jQuery代码可读。我是个新手——我第一次尝试这样的东西。

我的python代码看起来像这样(为了简洁,删除了一些代码):

import json
jinja2_ENVIRONMENT.filters['json'] = json.dumps
filterList = ["context","home"]
template_values = {
"filterList" : filterList
}

,我使用

传递给输出:
self.response.write(template.render(template_values))

我的HTML模板中的属性是这样的:

filterlist="{{ filterList|json }}"

我的问题是,数组是不可读的javascript在浏览器上。在元素检查器中,它看起来像这样:

filterlist="["context", "home"]"

而对于JSON,我想我想要像'["context","home"]'这样的东西,以便我的jQuery代码可以读取。[编辑:它是可读的,但作为一个字符串,而不是作为一个数组…]如果不需要的话,我宁愿不写解析器。

var filterList = $("body").attr("filterlist");

谢谢你的帮助。

您已经将JSON传递给模板了。因此只需使用:

输出它
filterlist={{ filterList|safe }};

我尝试了上面建议的所有方法,但仍然有一些问题。最后,我使用JSON.parse()方法找到了一个解决方案。通过在jQuery代码中添加以下行:

var filterList = JSON.parse('{"filterList":'+$tasklist.attr("filterlist")+'}');

我可以访问数组filterList.filterList.

我不知道哪里出了问题,但我怀疑我没有正确使用jinja2 python库。尽管如此,这个解决方案对我来说还是有效的。