我使用的瓶作为Web服务器,需要Python列表传递给JavaScript的。
当我做的只是{{myList中}},瓶逃逸单引号对列表中的字符串,并将其显示为'
JS,反过来,是不是很高兴与它获取。
我设法找到一个解决办法,但我不认为这是最佳的一个。
var tempList = '{{eval(myList)}}'.replace(/'/g, "'");
var myNewList = eval(tempList);
我想知道,有没有更好的方法来做到这一点?
UPD:我搬到我找到了解决方案进入了“答案”部分。
我开始使用JSON(json_dumps在Python3,simplejson不会安装),但瓶子仍然逃逸单引号。 我瓶手册中发现,你可以跳过使用感叹号逃逸,改变了我的代码:
var myNewList = {{!myList}};
使用json
模块代替; 它输出有效的JavaScript表达式毕竟。
JSON(JavaScript对象表示法)是JavaScript语法的子集(ECMA-262第3版)[...]
简单的例子:
>>> import json
>>> json.dumps([1, 2, 'foo', 'bar'])
'[1, 2, "foo", "bar"]'
把那直入你的模板。 我用这一切把有效的JavaScript数据结构到我生成的网页所有的时间。
我不熟悉的瓶子,但我有同样的问题,使用Django的时候。 我的解决方法是转储Python列表以JSON格式。 JavaScript是满意JSON。
myList = [1, 2, 3, 'string', "&apm;", '"']
然后返回simplejson.dumps(myList)
到您的网页。 在JS:
var myList = <dumped-literal-JSON-string>
注意:不要用引号括的dumpped JSON值。
在Django使用的情况下,
var myNewList = {{myList|safe}};
Django的文档