Могу ли я получить доступ к пользовательскому вводу из Bokeh в приложении Flask - PullRequest
0 голосов
/ 22 мая 2018

Я встроил следующий пример взаимодействия пользователя с Bokeh в веб-приложение Flask.

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>
...