如何在Flask和Jinja2模板中显示列表的新值,而无需重新加载页面?

时间:2019-10-05 21:24:08

标签: javascript python html flask jinja2

我在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 %}

感谢您的关注。

0 个答案:

没有答案