使用 Django 嵌入 Bokeh 服务器

问题描述 投票:0回答:0

我曾尝试构建一个 Django Bokeh 应用程序的框架,但无法在单独的线程中选择 bokeh 服务器,因此使用 server_document 构建一个可以发送到 html 页面的脚本。

当我启动Django dev server并进入demo.html页面时,剧情不会出现。我怀疑 Bokeh 服务器可能没有正确启动。但在这里看不到任何解决方案。

demo.py(散景应用程序)

from bokeh.plotting import figure
from bokeh.layouts import column
from bokeh.server.server import Server

def modify_doc(doc):
    x_values = [1, 2, 3, 4, 5]
    y_values = [6, 7, 2, 4, 5]

    # Create a figure object
    fig = figure(title='Simple Bokeh Plot', x_axis_label='X-axis', y_axis_label='Y-axis')

    # Add a line glyph to the figure
    fig.line(x_values, y_values)

    # add the plot and slider to a layout and add to the document
    layout = column(fig)
    doc.add_root(layout)

Bokeh_server = Server({'/': modify_doc})

view.py:

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from django.shortcuts import render
import threading
import asyncio
from bokeh.embed import server_document
from tavla.bokehapp.demo import Bokeh_server

def demo(request):
    script = server_document('http://localhost:5006/')
    return render(request, 'tavla/demo.html', {'script': script})

def start_bokeh_server():
    Bokeh_server.start()

if __name__ == '__main__':
    bokeh_thread = threading.Thread(target=start_bokeh_server)
    bokeh_thread.start()

demo.html:

{% extends "blog/base.html" %}
{% block content %}
<html>
    <head>

        <link href=”http://cdn.pydata.org/bokeh/release/bokeh-2.3.2.min.css" 
            rel=”stylesheet” type=”text/css”>
        <link href=”http://cdn.pydata.org/bokeh/release/bokeh-widgets-2.3.2.min.css"
            rel=”stylesheet” type=”text/css”>
    </head>
    <body>
        <h1 align="center">Demo datavisualisering</h1>
        <div class="container overflow-hidden">
            <div class="row gx-5">
                <div class="col">
                    <div class="p-3 border bg-light">
                        Dette er en demo applikasjon
                        som viser hva som er mulig å 
                        få til av datavisualisering
                    </div>
                </div>
                <div class="col">
                    <div class="p-3 border bg-light">
                        <h1 align="center">Datavisualisering</h1>
                        {{ script|safe }}
                    </div>
                </div>
            </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4"
            crossorigin="anonymous"></script>
    </body>
    <script src="https://cdn.bokeh.org/bokeh/release/bokeh-3.0.3.min.js"></script>
    <script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.0.3.min.js"></script>
    <script src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.0.3.min.js"></script>
    <script src="https://cdn.bokeh.org/bokeh/release/bokeh-api-3.0.3.min.js"></script>
</html>

{% endblock content %}
django embedded bokeh
© www.soinside.com 2019 - 2024. All rights reserved.