Django:Bokeh.safely 不是一个函数

Posted

技术标签:

【中文标题】Django:Bokeh.safely 不是一个函数【英文标题】:Django: Bokeh.safely is not a function 【发布时间】:2017-09-22 13:37:24 【问题描述】:

我试图将散景图嵌入到我的 django 应用程序中。我按照Bokeh website 和another question 上的说明进行操作。

我的浏览器控制台出现以下错误,但没有得到任何绘图输出:

Uncaught TypeError: Bokeh.safely is not a function
at htmlDocument.fn (localhost/:15)

我不是 JS 专家,但 Bokeh.safely 存在于 Bokeh 生成的脚本中。我附上了最后生成的脚本:

我的views.py文件:

from django.shortcuts import render
from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.embed import components

def showGraph(request):
    arr = [1,4,9,16,25,36]
    y = [1,2,3,4,5,6]
    plot = figure()
    plot.line(arr, y)

    script, div = components(plot, CDN)

    return render(request, "data_collection/simple_chart.html", "script": script, "div": div)

simplechart.html 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Bokeh example</title>
    <link rel="stylesheet" href="http://cdn.bokeh.org/bokeh/release/bokeh-0.12.0.min.css">
    <link rel="stylesheet" href="http://cdn.bokeh.org/bokeh/release/bokeh-widgets-0.12.0.min.css">
    <script src="http://cdn.bokeh.org/bokeh/release/bokeh-0.12.0.min.js"></script>
    <script src="http://cdn.bokeh.org/bokeh/release/bokeh-widgets-0.12.0.min.js"></script>

     script | safe 
</head>
<body>

     div | safe 


</body>
</html>

散景生成的脚本:

(function()
    var fn = function()
            Bokeh.safely(function()
                var docs_json = ....json.....;
                var render_items = [
                    "docid": "27fe9292-3142-4617-b273-f9d932e47df3", "elementid": "7b2ef36e-a7d2-4a6b-88e6-186edecde6ca",
                     "modelid": "741db3b0-26ce-45c1-86b4-d95394c7331f"];

                Bokeh.embed.embed_items(docs_json, render_items);
        );
    ;
    if (document.readyState != "loading") fn();
    else document.addEventListener("DOMContentLoaded", fn);
)();

【问题讨论】:

【参考方案1】:

您正在您的simplechart.html 模板中从CDN 加载BokehJS 的0.12.0 版本,但几乎可以肯定的是,您使用的是更新版本的Python Bokeh 库。 BokehJS 和 (Python) Bokeh 库的版本必须匹配。

【讨论】:

哦,是的,我刚刚从 Bokeh 网站上挑选了 CDN,假设它是最新的。应该看到这个

以上是关于Django:Bokeh.safely 不是一个函数的主要内容,如果未能解决你的问题,请参考以下文章

请教各位高手Django的url配置问题

solr 可以返回函数值(不是 solr 分数或文档字段)吗?

Django之路由

Django 形式的懒惰选择

Django中间件

Django 404500页面全局配置