【问题标题】:Bokeh chart in Django returning a blank pageDjango中的散景图返回空白页
【发布时间】:2019-08-22 12:28:11
【问题描述】:

我正在尝试通过tutorial 在 django 页面上显示一个简单的散景图,但加载时网页是空白的 - 没有图表。

有一个类似的 Stack Overflow 问题,其中在 html 文件中引用了错误版本的散景 - 我检查以确保这里不是这种情况。我也尝试使用渲染功能,因为 render_to_response 显然已被弃用,但同样的事情发生了。

<!DOCTYPE html>
<html lang='en'>
    <head>
        <link href="http://cdn.bokeh.org/bokeh/release/bokeh-1.0.4.min.css" rel="stylesheet" type="text/css">
        <link href="http://cdn.bokeh.org/bokeh/release/bokeh-widgets-1.0.4.min.css" rel="stylesheet" type="text/css">
        <script src="http://cdn.bokeh.org/bokeh/release/bokeh-1.0.4.min.js"></script>
        <script src="http://cdn.bokeh.org/bokeh/release/bokeh-widgets-1.0.4.min.js"></script>
        {{ script | safe }}
        <title>testing bokeh...</title>
    </head>

    <body>
        {{ div | safe }}
    </body>
</html>
from django.shortcuts import render, render_to_response
from bokeh.plotting import figure, output_file, show
from bokeh.embed import components
def bokehTutorial(request):
    x, y, = [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]
    #Setup graph plot
    plot = figure(title = 'Line Chart', x_axis_label = 'X axis', y_axis_label = 'Y axis', plot_width = 400, plot_height = 400)
    #plot line
    plot.line(x, y, line_width = 2)
    #store components
    script, div = components(plot)
    #return to django homepage with components sent as arguments which will then be displayed
    return render_to_response('appName/bokehTutorial.html', {'script': script, 'div': div})
    #return render(request, 'appName/bokehTutorial.html', {'script': script, 'div': div})

我希望网页显示折线图。但是,网页在加载时显示为空白。

【问题讨论】:

    标签: python django bokeh


    【解决方案1】:

    我认为您需要先放置div,因为script 正在搜索它以将代码放入其中。也只需使用INLINE.render()CDN.render() 自动链接资源(除非您知道自己在做什么)。所以尝试以下方法:

    index.html

    <!DOCTYPE html>
    <html lang='en'>
        <head>
            {{ resources | safe }}
            <title>testing bokeh...</title>
        </head>  
        <body>
            {{ div | safe }}
            {{ script | safe }}
        </body>
    </html>
    

    django_app.py

    from django.shortcuts import render, render_to_response
    from bokeh.plotting import figure, output_file, show
    from bokeh.embed import components
    from bokeh.resources import INLINE
    
    def bokehTutorial(request):
        x, y, = [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]
        #Setup graph plot
        plot = figure(title = 'Line Chart', x_axis_label = 'X axis', y_axis_label = 'Y axis', plot_width = 400, plot_height = 400)
        #plot line
        plot.line(x, y, line_width = 2)
        #store components
        script, div = components(plot)
        #return to django homepage with components sent as arguments which will then be displayed
        return render_to_response('appName/bokehTutorial.html', {'resources' = INLINE.render(), 'script': script, 'div': div})
    

    【讨论】:

      【解决方案2】:

      我收到最后一行的合成错误。想法? return render('fish/ticket_class.html', {'resources' = INLINE.render(), 'script': script, 'div': div})

      【讨论】:

      • 'resources' = INLINE.render() 应该是 'resources': INLINE.render()
      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 2016-11-01
      • 2017-11-20
      • 1970-01-01
      • 2021-09-14
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多