簡體   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