You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bokeh DataTable无法加载求助(Django环境下)

解决Django中嵌入Bokeh DataTable无法加载的问题

问题核心原因

浏览器报错could not resolve type 'DataTable',本质是Bokeh的DataTable属于交互式组件(Widgets)范畴,默认的Bokeh核心JS库不包含这类组件的定义,必须额外加载对应的Widgets依赖文件,否则浏览器无法识别该组件类型。


分步解决方案

1. 补充Bokeh Widgets的JS/CSS依赖

在你的Django主模板(base.html或product.html)的<head>标签内,添加与你Bokeh版本匹配的Widgets资源(当前使用版本为3.6.3):

<!-- Bokeh核心库 -->
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-3.6.3.min.js"></script>
<!-- 必须添加:DataTable依赖的Widgets库 -->
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.6.3.min.js"></script>
<!-- 可选:添加表格样式文件,优化显示效果 -->
<link rel="stylesheet" href="https://cdn.bokeh.org/bokeh/release/bokeh-3.6.3.min.css">
<link rel="stylesheet" href="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.6.3.min.css">

注意:版本号必须和你Python环境中安装的Bokeh版本完全一致,可通过pip show bokeh命令查看本地版本。

2. 修正视图中的变量名错误

你的视图代码存在变量名不一致的问题:定义的数据源是product_data,但后续赋值时误用了rating_data,会导致数据源为空,修正后:

data = {
    "Rating Type": list(product_data.values_list('Rating_Type', flat=True)),
    "Year": list(product_data.values_list('Rating_Year', flat=True)),
    "Rating": list(product_data.values_list('Rating', flat=True)),
}

3. 调整局部模板的脚本位置

确保Bokeh生成的脚本在DOM元素加载后执行,将脚本放在表格容器之后:

<div id="prod-rating-chart">
    {{ rating_div|safe }}  
</div>

{{ rating_script|safe }}

额外检查点

  • 如果不使用CDN,需将Bokeh的Widgets相关JS/CSS文件拷贝到Django静态目录,通过{% static %}标签引用。
  • 验证前端控制台是否还有其他报错,比如数据源为空、跨域问题等,逐步排查。

内容的提问来源于stack exchange,提问作者Mikal025

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:50:01