dte*_*ter 5 python templates jinja2 flask bokeh
在烧瓶函数中渲染模板后,元素是否可以动态更改,即无需重新渲染模板?
假设我有这个烧瓶页面:
@app.route("/"):
def index():
### generate div content
### have a button callback that changes the div content
return render_template('index.html', divcontent=content)
Run Code Online (Sandbox Code Playgroud)
然后在模板中:
{{divcontent}}
Run Code Online (Sandbox Code Playgroud)
即使回调成功更改了flask 中的div 内容变量,页面也不会更新。我说这是因为页面在第一次加载时已经呈现,因此内容没有动态更新,我说得对吗?
在上下文中; 我将散景图的 div 组件嵌入到模板中,如下所示:
script, div = components(fig, INLINE)
return render_template('index.html', script=script, div=div)
Run Code Online (Sandbox Code Playgroud)
但我在同一页面上也有一个下拉菜单,如果更改,应该更改绘图,因此在下拉回调中,我通过使用现在新的“无花果”调用组件函数来“重新生成”脚本和 div,但是页面没有显示这些更改,我认为这是因为页面是第一次呈现的,所以新的参数脚本和 div 没有被更新。
我也在用多个下拉菜单做类似的事情;即当在散景小部件中选择一个下拉列表时,它会调用一个回调,该回调应该用自定义列表填充另一个下拉列表。以下是实际的回调JS代码:
dropdown2 = Select(title="Parameter:", value="Select parameter", options=['Select parameter'])
callback = CustomJS(args=dict(dropdown2=dropdown2), code="""
var selValue = cb_obj.get('value');
$.ajax({
type: "POST",
url: "retrieveColumns",
data:'id='+selValue,
success: function(data){
dropdown2.set('options',data.List);
}
});
column_select.set('options','hi');
column_select.trigger('change');
""")
dropdown1 = Select(title="Choose type:", value="Select type", options=selectList, callback=callback)
Run Code Online (Sandbox Code Playgroud)
这是与此问题的一部分类似的问题,其中 OP 询问如何将滑块值发送回 jinja。Javascript 回调是“解决方案”之一,但是就像我上面说的那样,我无法“更新”jinja 元素。
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |