gpt4 book ai didi

python - 如何使用 Python Flask 下载生成器?

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:36 25 4
gpt4 key购买 nike

我正在编写一个生成大量最终用户将下载的数据(CSV 文件)的应用程序。我目前有一个页面,它根据输入表单生成数据并将创建的生成器对象返回给用户,如下所示:

@app.route('/data', methods = ['GET', 'POST'])
def data():
form = Form()
if form.validate_on_submit():
generator = create_generator(form)
name = "results.csv"
return Response(generator, mimetype="text/plain", headers={"Content-Disposition": "attachment;filename={}".format(name)})
return render_template('data.html', title = 'Data Page', form = form)

现在,我想做的是获取该生成器以及一些额外的数据,并将其传递给应用程序中的另一个 View /页面,例如:

@app.route('/data', methods = ['GET', 'POST'])
def data():
form = Form()
if form.validate_on_submit():
generator, data = create_generator(form)
name = "results.csv"
#Can't send data in a redirect, but for example...
redirect('/result', generator=generator, data=data, name=name)
return render_template('data.html', title = 'Data Page', form = form)

@app.route('/output', methods = ['GET', 'POST'])
def output():
form = Form()
return render_template('output.html', title = 'Output Page', generator=generator, data=data, name=name)

在哪里output.html然后会有一个可点击的链接来下载生成器。换句话说,生成器不会像第一个示例中那样立即返回 return Response()。 ,而是等待用户。

总而言之,我要做的主要两件事是:

  1. 在页面之间传递一个生成器
  2. 返回一个生成器作为标准链接(<a href={{generator}}></a> 或类似的东西)

最佳答案

HTTP 协议(protocol)是无状态的,您所要求的是不可撤销的。在您发出请求之前,服务器不知道您在做什么,并且附加到客户端的唯一数据是随请求发送的数据。

生成器是一个 python 对象,因此不能像您建议的那样集成到 HTML 页面或链接中。您可以链接到您的应用中使用生成器流式传输内容的部分,但不使用生成器作为链接,这是没有意义的。

以下代码段描述了您可以做的最接近的事情。没有编写实际代码,我只是使用注释向您展示架构。

@app.route('/data', methods = ['GET', 'POST'])
def data():
form = Form()
if form.validate_on_submit():
# Complete request
# Generate data
# Generate temp filename and save the result in it
# Display (or redirect to) a page with a link to /get-result/{{ THE RESULT ID }}

return render_template('data.html', title = 'Data Page', form = form)

@app.route('/get-result/<result_id>', methods = ['GET', 'POST'])
def output():
# Open the result file based on its id
# Stream it to the client as you did before

关于python - 如何使用 Python Flask 下载生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com