Python 使用WebApp2将数据从后端发送到前端的正确方法?

Python 使用WebApp2将数据从后端发送到前端的正确方法?,python,webapp2,Python,Webapp2,我在学习,我被一些我不能理解的东西困住了 我有一个简单的hello world应用程序,它是用python GAE和WebApp2构建的 我想使用D3.js在前端显示一个图表 如果我能够将一些数据直接显示到前端的HTML部分{{data}}我就无法在前端的标记中传递任何数据 以下是我的后端的主处理程序: MainHandler(webapp2.RequestHandler): def get(self): data = [{'Letter': 'A', 'Freq': 2

我在学习,我被一些我不能理解的东西困住了

我有一个简单的hello world应用程序,它是用python GAE和WebApp2构建的

我想使用D3.js在前端显示一个图表

如果我能够将一些数据直接显示到前端的HTML部分{{data}}

我就无法在前端的标记中传递任何数据

以下是我的后端的主处理程序:

MainHandler(webapp2.RequestHandler):
    def get(self):
        data = [{'Letter': 'A', 'Freq': 20  },{'Letter' : 'B','Freq': 12},{'Letter' : 'C','Freq': 47}]
        template_values = {
            'data' : data
        }
        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))

app = webapp2.WSGIApplication([
    ('/', MainHandler),
], debug=True)
在前端,我有一个简单的console.log{{data},它导致了以下错误:&

我想这里有些东西我不明白,但我不知道是什么

模板引擎是您的数据,以防止它混淆浏览器的渲染引擎,或导致安全问题。所以

[{'Letter':'A','Freq':20}]

被渲染为

[{&39;字母&39;:&39;A&39;,&39;频率&39;:20}]

[{“字母”:“A”和“频率”:20}]

这让人困惑,console.log是一个不知道html转义的javascript函数

您可以使用过滤器在Jinja2中重写此行为

console.log{{data | safe}

请注意,您应该只覆盖受信任数据上的转义