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

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

WBOY
WBOYOriginal
2016-06-06 16:23:292737browse

我试过了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:
<code class="language-js"><span class="nx">mydata</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"msg"</span><span class="p">,</span> <span class="s2">"Hello Flask."</span><span class="p">};</span>          <span class="c1">// 要传输的数据</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">getJSON</span><span class="p">(</span><span class="s1">'/dataconvector'</span><span class="p">,</span> <span class="p">{</span>              <span class="c1">// Flask中获取数据的function的url</span>
        <span class="nx">mykey</span><span class="o">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">mydata</span><span class="p">)</span>      <span class="c1">// 定义一个keyword, 将数据stringify</span>
    <span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>                    <span class="c1">// 从Flask返回的数据</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">result</span><span class="p">);</span>
        <span class="nx">$</span><span class="p">(</span> <span class="s2">"#result"</span> <span class="p">).</span><span class="nx">text</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">result</span><span class="p">);</span>
    <span class="p">}</span>
<span class="p">);</span>
</code>
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 比较方便。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn