繁体   English   中英

如何从tornado web调用javascript函数<python> ?

[英]How to call a javascript function from tornado web <python>?

我想用smoothy js制作一个实时图表。 我的服务器从龙卷风中运行,这是用 python 编写的。 Smoothy 可以实时刷新图表。 在python中,我渲染了包含smoothy的html文件,但我不知道如何从python刷新数据(因为我的数据在SQL数据库中)有从html文件调用的函数:(称之为ex.html)

  var line1 = new TimeSeries();
  var line2 = new TimeSeries();
  var i = 1;
  setInterval(function() {
    line1.append(new Date().getTime(), Math.random);
    line2.append(new Date().getTime(), Math.random());
  }, 1000);

如您所见,append 方法更新了我的图表,第二个参数是值(x 轴)。 所以我的问题是:如何使用冰沙从龙卷风网络添加信息?

还有我的python代码:

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("ex.html")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

如果我的描述无法理解,请给我留言。 感谢你的回答!

您可以将信息传递给您的模板,例如

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        data = {"x": "01/01/17", "y": 100}
        self.render("ex.html", data=data)

并在 html 模板中

line1.append({{ data["x"] }},{{ data["y"] }} )

这只是一个简单的示例,请查看模板文档以获取更复杂的示例,例如使用循环。

这种方式是静态的,对于ajax来说可以,这里是一个例子。

<script type="text/javascript">
        setInterval(function() {
        $.getJSON("/stats",function(data){
        line1.append(data.time, data.in);
        line2.append(data.time, data.in);
        });
        }, 1000);
</script>
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("ex.html")

class Stats(tornado.web.RequestHandler):
    def get(self):
        self.write({"time":"time","in":10})

def make_app():
    return tornado.web.Application([
        (r"/stats", Stats),
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM