在刻录功能中渲染模板后,可以动态更改元素,即无需重新渲染模板吗?
说我有这个烧瓶页面:
@app.route("/"):
def index():
### generate div content
### have a button callback that changes the div content
return render_template('index.html', divcontent=content)
然后在模板中:
{{divcontent}}
即使回调成功更改了flask中的div内容变量,该页面也不会更新。我是否正确地说这是因为页面首次加载时已呈现,因此内容未动态更新?
在上下文中;我将散景图的div组件嵌入模板中,如下所示:
script, div = components(fig, INLINE)
return render_template('index.html', script=script, div=div)
但是我在同一页面上也有一个下拉菜单,如果更改了,应该更改情节,因此在下拉回调中我会重新生成'脚本和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)
对于this问题的一部分,这是一个类似的问题,其中OP询问如何将滑块值发送回jinja。 Javascript回调是其中一个解决方案'但就像我上面所说,我无法更新' jinja元素。
答案 0 :(得分:-1)
我是否正确地说这是因为页面首次加载时已呈现,因此内容未动态更新?
是的,这正是发生的事情。您需要使用javascript / ajax才能动态更新页面。