Django中的散景图返回空白页
Posted
技术标签:
【中文标题】Django中的散景图返回空白页【英文标题】:Bokeh chart in Django returning a blank page 【发布时间】: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)
我希望网页显示折线图。但是,网页在加载时显示为空白。
【问题讨论】:
【参考方案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()
以上是关于Django中的散景图返回空白页的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Django 上传按钮旁边嵌入散景图时出现 ImportError