我正在编写一个小型Web应用程序来显示一些数据,这些数据当前存储为dict
。我需要将其传递给模板,但我继续收到javascript错误:Unexpected identifier 'name'. Expected ';' after variable declaration.
我使用的python代码是:
from bottle import run
from bottle import template
app = Bottle()
@app.route("/hello")
def hello():
# .... code to read and clean the data
my_data = {"name": "my name", "parent": "null", "children": "children"}
return template('tree', **my_data)
run(app, host='localhost', port=8080, debug=True)
和.tpl文件是:
<body>
<!-- load the d3.js library -->
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var treeData = {{!name}};
//some javascript to display the data
</script>
</body>
</html>
如何确保dict值作为字符串传递,或者js以某种方式可用于显示?
理想情况下,js使用的数据格式应为:
var treeData = [{"name": "Top Level",
"parent": "null",
"children": [
{
"name": "Level 2: A",
"parent": "Top Level",
"children":}]}]
答案 0 :(得分:2)
首先将字典转换为JSON。通过这种方式,浏览器上的javascript可以将数据作为对象读取。
接下来,由于模板中的变量是name
,我认为你应该加载名称作为参数的模板。总的来说,以下内容应该适用于您的最终结果
import json
def hello():
....
my_data = {"name": "my name", "parent": "null", "children": "children"}
return template('tree', name=json.dumps(my_data))