我可以在Flask应用程序中访问Bokeh的用户输入

时间:2018-05-22 18:32:46

标签: python flask server bokeh

我在Flask网络应用程序中嵌入了以下来自Bokeh的用户交互示例。

tools_point_draw

它使用户能够在点绘制工具(右上角)被激活时创建,拖动和移除点。

我试图通过这个简单的示例获取用户生成的数据,以便进一步处理。

这可能吗? 我可以将数据同步回python服务器端吗? 如果是,有人可以概述一下如何做的步骤吗?

来自webapp.py的

代码

from flask import Flask, render_template
from bokeh.plotting import figure, ColumnDataSource, Column
from bokeh.models import DataTable, TableColumn, PointDrawTool, ColumnDataSource
from bokeh.embed import components
from bokeh.resources import INLINE

app = Flask(__name__)

@app.route("/")
def show_data():

    p = figure(x_range=(0, 10), y_range=(0, 10), tools=[],
               title='Point Draw Tool')
    p.background_fill_color = 'lightgrey'

    source = ColumnDataSource({
        'x': [1, 5, 9], 'y': [1, 5, 9], 'color': ['red', 'green', 'yellow']
    })

    renderer = p.scatter(x='x', y='y', source=source, color='color', size=10)
    columns = [TableColumn(field="x", title="x"),
               TableColumn(field="y", title="y"),
               TableColumn(field='color', title='color')]
    table = DataTable(source=source, columns=columns, editable=True, height=200)

    draw_tool = PointDrawTool(renderers=[renderer], empty_value='black')
    p.add_tools(draw_tool)
    p.toolbar.active_tap = draw_tool

    script, div = components(Column(p,table))

    return render_template('index.html', script=script, div=div, js_resources=js_resources,
                           css_resources=css_resources)

js_resources = INLINE.render_js()
css_resources = INLINE.render_css()

if __name__ == '__main__':
    app.run(port=5000, debug=True)

index.html的代码

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>User Interaction</title>
        {{ js_resources|safe }}
        {{ css_resources|safe }}
        {{ script|safe }}
    </head>
    <body>
        {% block body %}
            {{ div|safe }}
        {% endblock %}
    </body>
</html>

0 个答案:

没有答案