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

我试过了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 browserbottle-websocket
flask-socketio, 相当简单易用https://flask-socketio.readthedocs.org/en/latest/
入门上手的话推荐看这本: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可以读取的格式。字符串就不必了。参考我的博客http://www.cnblogs.com/lewis617/p/5184621.html
用flask搭建一个restful服务,以json作为数据接口,这样前台就能获取后台的数据。
tornado + websocket 也是一个选择,格式 json 比较方便。

Posted in 未分类