我想通过在列表中添加更多“东西”来不断更新我的列表 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()
函数中实现这一点。
感谢您的帮助!
答案 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 中。