我有旧的生产代码,这些代码将Bokeh应用程序嵌入Django。目的是为用户特定的仪表板提供服务。散景代码根据documentation从请求中访问username
个参数。
应用程序是使用bokeh 0.13
构建的。
在Django端,按照以下示例传递username
参数:
views.py
中的示例片段:from bokeh.util import session_id
from bokeh.embed import server_session
def get_bokeh_script(user, url_suffix):
bokeh_session_id = session_id.generate_session_id()
bokeh_url = "https://" + settings.BOKEH_HOST + ":" + settings.BOKEH_PORT + url_suffix
script = server_session(url=bokeh_url, session_id=bokeh_session_id, resources=None, arguments={"username":user.username})
return script
def my_view1(request):
url_suffix = "/my_suffix"
script = get_bokeh_script(request.user, url_suffix)
return render(request,'dashboard/index.html',{'script':script})
我需要将代码迁移到bokeh >1.0
,尤其是对于on_session_destroyed
对象的Document()
方法。
但是,似乎migration guide删除了arguments
的{{1}}参数(另请参见讨论here)。
是否存在一种变通方法,使我可以将server_session
版本的username
作为参数从Django传递给Bokeh?
答案 0 :(得分:0)
对于Bokeh v1.0.4,您可以尝试:
script = server_document(url = bokeh_url,
relative_urls = False,
resources = 'default',
arguments={"bokeh-session-id": bokeh_session_id,
"username": user.username } )
它返回脚本并允许使用arguments
参数。
另一种选择是使用其他方法(例如, push_session()
还允许参数并构造ClientSession
如果要通过用户检查身份验证,则可以pip install flask-user
并执行:
@login_required
def my_view1(request):
url_suffix = "/my_suffix"
script = get_bokeh_script(request.user, url_suffix)
return render(request,'dashboard/index.html',{'script':script})