Embed an interactive Bokeh in django views

Thomas PEDOT picture Thomas PEDOT · Jan 21, 2017 · Viewed 11.8k times · Source

I want to make interactive plot in django views (or model ?). Let's say I want to use selection_histogram example. I think Bokeh fit my needs because, I have matplot/seaborn that I can reuse and I'm not pretty good at javascript.

There was no problem for me to follow this example : how to embed standalone bokeh graphs into django templates.

As I understand, I need to run a bokeh server and make some proxy using nginx

How can I embed a interactive bokeh plot into a django view ?

I tried this :

Launch bokeh server

bokeh serve --allow-websocket-origin=127.0.0.1:8001 selection_histogram.py

Update my view in views.py

def simple_chart(request):

    script = autoload_server(model=None,
                             app_path="/selection_histogram",
                             url="http://localhost:5006/")


    return render(request, "simple_chart.html", {"the_script": script})

Now, it is interactive as expected.

Is there a way to pass some arguments to bokeh application ?

Any helps will be appreciated. Regards

Answer

DA-- picture DA-- · Jan 21, 2017

You don't need to run a Bokeh server to use Bokeh in DJANGO. You can just import Bokeh into you views.py.

You need to load the Bokeh js and css in your template, and render the components created by Bokeh. It think this is a concise example.