Python tornado:将字符串数据传递给呈现页面中的javascript代码

Python tornado:将字符串数据传递给呈现页面中的javascript代码,python,tornado,Python,Tornado,我想将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):

我想将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>
不用说,
JSON.parse
在使用那些
s时会失败


有任何关于这里出了什么问题的提示吗?

您可能应该试试
{%raw data%}
。但是,请注意,由于您在带Javascript引号的字符串中使用该字符串,“数据”本身应该包含适用于该字符串的内容:而json.dumps()输出无效-您需要对其进行适当的转义-无论是在调用.render()的代码中还是在模板本身中(后者更可取)。也许是这样:

obj = JSON.parse({% raw json_encode(data) %});
(使用字符串值的json_encode()将输出“转义数据”这一事实)

obj = JSON.parse({% raw json_encode(data) %});