当前位置:Gxlcms > Python > 希望用flask作为中介让python和js交互,大家有什么比较好的实践经验没?

希望用flask作为中介让python和js交互,大家有什么比较好的实践经验没?

时间:2021-07-01 10:21:17 帮助过:51人阅读

我试过了getjson之类的是可以的但是比较怀疑数据量大的话用什么比较好啊?记得见过有人是pandas+d3.js+flask用的,不过找不到了

回复内容:

无邀自答,只因为在我主页的信息流里面多看了你一眼。。。。这话题选得各种切中我的要害啊。

我是勤劳的搬运工。


Getting Your Python Data Onto Browser介绍了如何将你的python数据弄到浏览器里面。所以其实JSON才是python和js的中介,Flask框架只是帮你简单的建立一个JSON服务器而已,连RESTfull都谈不上,如果你只是用来可视化的话。当然你也可以实现增修改删的RESTful服务。同理,你也可以用Tornado,也许它的性能更好。


我假定是一个动态的服务,那么Panda的DataFrame可以帮你快速地处理数据,Playing with REALTIME data, Python and D3和Data visualization using D3.js and Flask都有介绍相关的细节。


功能实现后,你所关心的可能是性能问题。我觉得大多数还不太会需要这方面的担忧。最烦人的可能是开发和可维护性。当然如果关心性能,你也可以在你功能完善的情况下,考虑服务器的优化,引入cache服务,服务器平衡等等,我觉得这不是你关心的。


此外,强烈推荐数据可视化控,可以试试ipython notebook. 这篇Visualizing a NetworkX graph in the IPython notebook with d3.js可能会让你强烈地喜欢上ipython notebook.

新手的个人经验:
比如现在我们要将一个数据从Javascript传输到Flask, 进行处理后再传回Javascript. 我们可以使用jQuery中的getJSON, 并将数据转化为String后进行传输.

Javascript + jQuery:
mydata = {"msg", "Hello Flask."};          // 要传输的数据
$.getJSON('/dataconvector', {              // Flask中获取数据的function的url
        mykey: JSON.stringify(mydata)      // 定义一个keyword, 将数据stringify
    }, function(data) {                    // 从Flask返回的数据
        console.log(data.result);
        $( "#result" ).text(data.result);
    }
);
websocket啊

另外推荐神器 GitHub - brython-dev/brython: Brython (Browser Python) is an implementation of Python 3 running in the browser

bottle-websocket flask-socketio, 相当简单易用
flask-socketio.readthedocs.org 入门上手的话推荐看这本:
Data Visualization with Python and JavaScript - O'Reilly Media 推荐一个Github上面的开源项目,Caravel(GitHub - airbnb/caravel: Caravel is a data exploration platform designed to be visual, intuitive, and interactive),我正在学习和研究它 在flask这个包里有jsonify这个方法,可以return这个方法的返回值,在js那边接受为json。

除此之外,还可以使用jinja过滤器,在html上将字典转化为js可以读取的格式。字符串就不必了。
参考我的博客
cnblogs.com/lewis617/p/ 用Flask搭建一个RESTful服务,以JSON作为数据接口,这样前台就能获取后台的数据。 tornado + websocket 也是一个选择,格式 json 比较方便。

人气教程排行