Search code examples
djangopython-2.7django-templatesbokeh

how to embed standalone bokeh graphs into django templates


I want to display graphs offered by the bokeh library in my web application via django framework but I don't want to use the bokeh-server executable because it's not the good way. so is that possible? if yes how to do that?


Solution

  • Using the Embedding Bokeh Plots documentation example as suggested by Fabio Pliger, one can do this in Django:

    in the views.py file, we put:

    from django.shortcuts import render
    from bokeh.plotting import figure
    from bokeh.resources import CDN
    from bokeh.embed import components
    
    def simple_chart(request):
        plot = figure()
        plot.circle([1,2], [3,4])
    
        script, div = components(plot, CDN)
    
        return render(request, "simple_chart.html", {"the_script": script, "the_div": div})
    

    in the urls.py file we can put :

    from myapp.views import simple_chart 
    ...
    ...
    ...
    url(r'^simple_chart/$', simple_chart, name="simple_chart"),
    ...
    ...
    

    in the template file simple_chart.html we'll have :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Experiment with Bokeh</title>
        <script src="http://cdn.bokeh.org/bokeh/release/bokeh-0.8.1.min.js"></script>
        <link rel="stylesheet" href="http://cdn.bokeh.org/bokeh/release/bokeh-0.8.1.min.css">
    </head>
    <body>
    
        {{ the_div|safe }}
    
        {{ the_script|safe }}
    </body>
    </html> 
    

    And it works.