在Django模板中呈现Bokeh小部件

7
我是django和bokeh的新手。 我试图在django web应用程序中呈现一个简单的bokeh图表,并支持一些选择选项,这些选项基本上允许我调整我的图表内容。
当从bokeh.embed.components()获取的script和div元素作为上下文变量传递给模板时,会呈现出图表。但是当我有一个小部件和一个图表保存在bokeh.io.vform对象中时,同样的方法不起作用。
当我执行bokeh.plotting.output_file()并指定bokeh.io.show()时,可以获得正确的输出,但我正在尝试在我的web应用程序中运行它。 我是否遗漏了什么?或者还有其他方法可以实现我的意图吗?
只呈现bokeh小部件的代码如下:

views.py

#django imports 
from bokeh.embed import components
from bokeh.plotting import figure
from bokeh.io import vform
from bokeh.models.widgets import Select
def test(request):
    s = Select(title="test", value="a", options=['a','b','c'])
    script,div = components(s)
    return render(request,'test.html',RequestContext(request,{'script':script,'div':div}))

test.html

<html>
<head>
      <link href="http://cdn.bokeh.org/bokeh/release/bokeh-0.11.1.min.css" rel="stylesheet" type="text/css">
       <script src="http://cdn.bokeh.org/bokeh/release/bokeh-0.11.1.min.js"></script>
</head>
{% load staticfiles %}
<body>
      {{ div | safe }}
      {{ script | safe }}
</body>
</html>

当从Django中的test()启动test.html时,我期望会呈现一个选择表单元素,但实际上并没有出现。

一个小问题,我想从您的例子中学习。为了让它工作,urls.py文件应该包含什么内容?当我尝试访问test.html文件时出现“Page not found (404)”错误。 我的urls.py文件已经写成re_path(r'test /',views.test), - ankit7540
1个回答

2

最近,BokehJS被拆分成多个部分,以便根据实际使用的库的部分提供更灵活的选项。由于在许多情况下自动处理资源加载,因此在文档中无意中忽略了突出显示此拆分。但是,对于嵌入式来说,了解这一点非常重要。有一个问题需要更新文档,但您需要知道的是,如果您正在使用小部件,则现在还需要从CDN加载其他脚本:

http://cdn.bokeh.org/bokeh/release/bokeh-widgets-0.11.1.min.js
http://cdn.bokeh.org/bokeh/release/bokeh-widgets-0.11.1.min.css

太棒了!运行得像魔法一样 :D 非常感谢 :D 对我帮助很大 :D - Skanda Avadhani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接