在FLASK中是否有一种方法可以在页面打开时运行python函数?



我得到了一个FLASK应用程序,其中一个路由渲染了一个带有特定参数的Folium地图。folium映射被加载到iframe中,每隔x分钟刷新一次。地图生成是由html表单触发的。

瓶部分:

@app.route('/hermesmap', methods=['GET','POST']) 
def hermesMap():  

if request.method == "POST": 
userName = request.form['username'] 
password = request.form['password'] 
server = request.form['server']  
server = server[8:-1]
ascii_pass = base64.urlsafe_b64encode(password.encode("ASCII"))
sshpass = str(ascii_pass)

sshpass = sshpass.replace("b","")
sshpass = sshpass.replace("'","")
hermesMapGen.mapUpdate(userName,sshpass,server)

return render_template("hermesMap.html")

"hermesMapGen"正在生成一个带有插入参数的folium map,该函数需要每五分钟调用一次,因此该map将具有更新的数据。

这是HTML:

<!DOCTYPE html>
<html>
{%block content%}

<div class="custom-height-map" style="position:relative;padding-top:42.25%;border-style:solid;border-width:6px;">
<iframe src="{{url_for('static',filename='sfMarketMap.html')}}" id='hermesmap' frameborder="0" allowfullscreen
style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe>
</div>

<script>
window.setInterval(function() {
reloadIFrame()
}, 300000);

function reloadIFrame() {
console.log('reloading..');
document.getElementById('hermesmap').contentWindow.location.reload();
}
</script>

{%endblock%}
</html>

是否有一种方法,我可以运行生成地图的功能,而地图页面在浏览器中打开?

谢谢提前

更新:截至目前,我能够找到一个解决方案与javascript。我在初始表单页面中放入了以下代码,迫使它模拟"点击"。即使每隔x分钟,但我认为应该有更好/正确的方法来做这件事。

<script>
var btn = document.querySelector("[name='lookup']");
//console.log(btn);
setInterval(function(){
btn.click();
},200000);
//Handling of click event
btn.onclick=function(){ 
console.log('clicked');
}
</script>

你的方向是对的。

继续使用setInterval,但这次对服务器进行fetch调用并获取最新数据。

查看这里的fetch。

最新更新