У меня есть приложение боке с несколькими корнями.Внутри шаблона боке я использую
{{embed(roots.plot1)}}
{{embed(roots.plot2)}}
# etc
для загрузки графиков.Это отлично работает.Теперь я хотел бы загрузить графики внутри веб-страницы, которую я буду обслуживать, из приложения Django.Поскольку мои графики создаются с использованием Holoviews, сервер Bokeh необходим.
В документации bokeh https://github.com/bokeh/bokeh/tree/master/examples есть примеры того, как автоматически загружать все графики с сервера Bokeh, а также примеры того, каквнедрить несколько статических графиков, используя components()
, но ни один из них, по-видимому, не охватывает этот вариант использования.
Вот что я пробовал:
# The following function is a function-based Django view
def django_view(request):
bokeh_url = 'http://localhost:5006/experiment'
roots = {root.name: root for root in session.document.roots}
with pull_session(url=bokeh_url) as session:
# I was hoping that these will generate separate autoload scripts for each model.
# Unfortunately they each embed all the models.
script1 = server_session(session_id=session.id, url=bokeh_url, model=roots['plot1'])
script2 = server_session(session_id=session.id, url=bokeh_url, model=roots['plot2'])
return render(request, "template.html", {"script1": script1, "script2: script2})
Выдержка из template.html:
{{ script1 | safe }}
{{ script2 | safe }}
В результате каждый тег сценария загружает все графики поверх друг друга.Как я могу вставить каждый график ровно один раз, где я хочу?Как я должен это делать?