我还是Flask的新手,我正在尝试建立一个烧瓶应用程序,当任务完成时闪烁状态
`
app.route("/", methods=['GET', 'POST'])
def root():
form = ReusableForm(request.form)
if request.method == 'POST':
name = request.form['name']
if form.validate():
Reports1 = RunReport1()
flash('Report 1 run successfully')
Report2 = RunReport2()
flash('Report 2 run successfully')
return render_template('run.html', form=form)'
然而,似乎没有办法在不每次渲染html页面的情况下刷新消息。任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
你可以在没有往返系统的情况下使用Flask。您必须使用content streaming。为此,您必须使用stream_with_context
作为回复。
@app.route("/")
def root():
reports = ["Reports1", "Reports2"]
def generate_output():
for i in range(0, len(reports)):
report = reports[i]
template = '<p>{{ report }}.</p>'
context = {'report': report}
yield render_template_string(template, **context)
time.sleep(5)
return Response(stream_with_context(generate_output()))
因此,这将更新响应,直到服务器端完成其任务。通常,这用于长时间运行的过程。请参阅documentation。
希望这有帮助!