我在Flask和模板jinja2中创建的Web应用程序存在问题。我在更新变量时遇到了问题,而不必重新加载网页。我想做的是:我在python中有一个列表,每个时间段都会添加一个新值(在此测试中,每秒会添加当前日期)。在网页上,我希望此列表始终与将添加的新值一起显示,但无需重新加载页面。
就页面更新脚本而言,我尝试了多种语言(Javascript,AJAX,PHP),但不幸的是没有。我还看到其他用户遇到相同的问题,但特征不同,但是很遗憾,我无法理解此更新的工作原理。我尝试了一些更简单的方法,而不是列表,但尝试了一个变量,但是什么也没有。所以我该怎么做?我应该怎么做才能找到解决方案?我留给我我的Web应用程序的代码。
这是我发送页面渲染的python代码,并且具有将当前日期每秒钟添加到我的函数,此外,它始终每秒更新变量“ i”(作为对单个变量)。
from flask import Blueprint, render_template
import time, threading
page_load_blue = Blueprint("page_load", __name__)
list = []
i = 0
@page_load_blue.route('/page_load', methods=["GET", "POST"])
def pagina_carica():
newTime()
global list
global i
return render_template("page_load.html", list=list, i=i)
def newTime():
global list
global i
i += 1
list.append(time.ctime())
threading.Timer(1, newTime).start()
这是HTML代码,带有来自W3Shools的Java证明,并适合我的需求。在此测试中,“应该”每秒显示一次变量的更新。 (显然,它是行不通的,但是在变量将在Javascript函数中更新的情况下才起作用,不幸的是,我不需要这种方式。)
{% extends "template_page_load.html" %}
{% block title %}LOAD{% endblock %}
{% block main %}
<div class="container">
<div class="row">
<div class="col">
<p id="demo"></p>
<script>
var myVar = setInterval(myTimer ,1000);
function myTimer() {
document.getElementById("demo").innerHTML = {{ i }};
}
</script>
</div>
</div>
</div>
{% endblock %}
感谢您的关注。