使用bottle将列表从python传递到js的最佳方式是什么

What would be the best way to pass a list from python to js using bottle?

本文关键字:js 最佳 是什么 方式 bottle 列表 python 使用      更新时间:2023-09-26

我使用Bottle作为web服务器,需要将python列表传递给javascript。

当我只执行{{myList}}时,Bottle会转义列表中字符串的单引号,并将其显示为'反过来,JS对它所得到的并不太满意。

我设法找到了一个解决方案,但我认为这不是一个最佳方案。

var tempList = '{{eval(myList)}}'.replace(/'/g, "'");
var myNewList = eval(tempList);

我想知道,有更好的方法吗?

upd:我将找到的解决方案移到了"答案"部分。

我开始使用json(在Python3中json_dumps,simplejson不会安装),但bottle仍然在转义单引号。我在瓶子手册中发现,你可以使用感叹号跳过逃跑,并更改了我的代码:

var myNewList = {{!myList}};

请改用json模块;它毕竟输出有效的JavaScript表达式。

JSON(JavaScript Object Notation)是JavaScript语法的一个子集(ECMA-262第三版)〔…〕

快速示例:

>>> import json
>>> json.dumps([1, 2, 'foo', 'bar'])
'[1, 2, "foo", "bar"]'

把它直接放进你的模板里。我一直在使用它来将有效的JavaScript数据结构放入我生成的网页中。

我不熟悉Bottle,但在使用Django时确实遇到了同样的问题。我的解决方案是将Python列表转储为JSON格式。Javascript对JSON很满意。

myList=[1,2,3,'string',"&apm;",'"']

然后将simplejson.dumps(myList)返回到您的网页。js:

var myList=<转储的文本JSON字符串>

注意:不要用引号将转储的JSON值括起来。