如何将独立的 Bokeh 图表嵌入 Django 模板中。
在使用Django模板时,我们常常需要将Bokeh图表嵌入到页面中。但是,如果想要实现在按钮点击时无需重新加载整个页面而显示一个图表,该怎么办呢?下面是一个使用AJAX请求实现这个功能的示例。
首先,在Django的视图函数中,我们通过JSON返回Bokeh图表的脚本和div:
from django.http import JsonResponse 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 JsonResponse({"script": script, "div": div})
然后,在JS中接收到AJAX响应后,首先将div添加到现有页面中,然后再添加脚本:
$("button").click(function(){ $.ajax({ url: "/simple_chart", success: function(result){ var bokeh_data = result; $('#bokeh_graph').html(bokeh_data.div); $("head").append(bokeh_data.script); }}); });
以上方法对我来说效果不错,但是我不得不删除了JSON.parse()方法。
在Django中嵌入独立的Bokeh图表是一个常见的需求。下面的代码展示了如何在Django模板中嵌入Bokeh图表。
首先,在`views.py`文件中,我们需要导入所需的库,并编写一个简单的绘图函数`simple_chart`。该函数创建一个Bokeh图表对象,并将其转换为HTML标签和脚本。然后,我们将这些标签和脚本传递给模板文件进行渲染。
接下来,在`urls.py`文件中,我们需要将这个绘图函数与一个URL进行关联,以便在浏览器中访问。
最后,在模板文件`simple_chart.html`中,我们将使用Bokeh的CDN链接来引入所需的JavaScript和CSS文件,并将图表的HTML标签和脚本插入到适当的位置。
这样,我们就可以在Django应用程序中嵌入独立的Bokeh图表了。
如果你遇到了`TypeError: Bokeh.safely is not a function`的错误,请参考上面给出的链接进行解决。
希望这个例子能够帮助你在Django中嵌入Bokeh图表。如果你有其他问题或建议,可以在Bokeh的文档或GitHub页面上提出。感谢你的支持!