我想将字典数据从Python传递到index.html
中。(我在这里使用tornado,但对其他允许它的小框架是开放的。)
我首先用json.dumps
序列化数据,然后这样
def start_server():
data = {"a": 1, "b": 3}
string_data = json.dumps(data)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
path = os.path.join(os.path.dirname(__file__), "web")
self.render(os.path.join(path, 'index.html'), data=string_data)
return
app = tornado.web.Application([(r"/", IndexHandler)])
app.listen(8000)
tornado.ioloop.IOLoop.current().start()
return
与
<script>
console.log("{{data}}");
obj = JSON.parse("{{data}}");
console.log(obj);
</script>
在index.html
中给了我
{"a": 1, "b": 3}
不用说,使用这些"
时,JSON.parse
会失败。
有没有什么问题的提示?
发布于 2018-06-26 08:10:21
你可能应该试试{% raw data %}
。但是,请注意,由于您在Javascript引用的字符串中使用了字符串,因此'data‘本身应该包含适合于此的内容:并且json.dumps()输出无效-您需要适当地对其进行转义-无论是在调用.render()的代码中还是在模板本身中(后者更可取)。也许是这样的:
obj = JSON.parse({% raw json_encode(data) %});
(使用字符串值的json_encode()将输出“转义数据”的事实)
https://stackoverflow.com/questions/51032863
复制相似问题