如何不断更新烧瓶中的变量

时间:2020-12-22 16:47:48

标签: python html python-3.x flask while-loop

我想通过在列表中添加更多“东西”来不断更新我的列表 stuff。但是,我的列表没有更新(最好每秒更新一次,但我不知道如何在烧瓶内进行 while 循环)。

这是我的 routes.py :

from flask import render_template
from app import app
from win32gui import GetWindowText, GetForegroundWindow

@app.route('/')
@app.route('/index')
def index():
    user = {'username': 'Miguel'}
    stuff = []
    stuff.append(GetWindowText(GetForegroundWindow()))
    return render_template('index.html', title='Home', user=user, stuff = stuff)

if __name__ == "__main__":
    app.run(debug=True)

这是我的 index.html :

<html>
    <head>
        {% if title %}
        <title>{{ title }} - Microblog</title>
        {% else %}
        <title>Welcome to Microblog!</title>
        {% endif %}
    </head>
    <body>
        <h1>Hello, {{ user.username }}!</h1>
        <h1>Here: </h1>
        {% for item in stuff %}
            <p> {{ item }} </p>
        {% endfor %}
    </body>
</html>

当我 flask run 时,列表中只有一项。我如何让程序知道我想继续添加更多项目?我想在 index() 函数中实现这一点。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

每次调用您的 index 方法时,局部变量 stuff 都会重新初始化为一个空列表,然后您将一个元素附加到它。这就是为什么每次刷新页面时,您只能在 stuff 中看到这个新添加的元素。

考虑将 stuff 设为全局,然后向其中添加项:

from flask import render_template
from app import app
from win32gui import GetWindowText, GetForegroundWindow

stuff = []

@app.route('/')
@app.route('/index')
def index():
    global stuff
    user = {'username': 'Miguel'}
    stuff.append(GetWindowText(GetForegroundWindow()))
    return render_template('index.html', title='Home', user=user, stuff = stuff)

if __name__ == "__main__":
    app.run(debug=True)

或者将全局变量存储在更多的 better way 中。