在我的app.py中,我有一个字符串列表,例如:
list = ['item 1', 'item 2', 'item 3']
我希望能够随机显示一个字符串,并在点击“刷新”按钮后将其显示在页面上,但每个项目只能显示一次。即。一旦项目全部以随机顺序显示,我就可以显示消息“已完成”。
我已经考虑刷新页面(如下所示),但这意味着这些项目可以一个接一个地出现,我可以随时保持刷新。这是我目前正在进行的工作代码,但我觉得它似乎与我想要的不相符。
items_list = ['A', 'B', 'C', 'D', 'E']
@app.route("/")
def index():
return render_template("index.html")
@app.route("/items", methods=['GET', 'POST'])
def items():
item = random.choice(items_list)
if request.method == "POST":
return render_template("scales.html", item=item)
else:
return render_template("scales.html")
items.html:
<div>
<p>{{ item }}</p>
<form action="/items" method="post">
<button onClick="window.location.reload();" type="button">Refresh</button>
</form>
</div>
也许我可以用AJAX做到这一点?但我需要一个数据库吗?
或者类似app.jinja_env.globals.update()
的内容
稍微有点遗憾,任何有关正确方向的建议或指示都将非常感谢。
答案 0 :(得分:1)
您可以使用Ajax或Websockets显示结果。然而,它也适用于&#34;正常&#34;你实现它的方式。
您应该将按钮声明为提交按钮以触发POST
事件。这会将您转到items()
端点。
<form action="/items" method="post">
<button type="submit" type="button">Refresh</button>
</form>
确保每个项目只在您需要从列表中删除后才能显示。
@app.route("/items", methods=['GET', 'POST'])
def items():
item = random.choice(items_list)
items_list.remove(item)
但是如果没有剩下任何物品,你还应该考虑该怎么做。