在一个Flask响应中返回下载并呈现的页面

我想返回渲染的页面和可下载的文件作为对请求的响应。我试图返回两个响应的元组,但是它不起作用。如何提供下载和页面?


return response, render_template('database.html')

return render_template('database.html'), response

Flask是否有能力应对这种情况?似乎是一个普通问题,我只是想将文件发送回去下载,然后呈现页面。


慕姐8265434
浏览 784回答 3
3回答

qq_笑_17

您不能对一个请求返回多个响应。取而代之的是,生成文件并将其存储在某个位置,然后通过另一条路径为它们提供服务。返回呈现的模板,并提供一个网址以提供该文件的路径。@app.route('/database')def database():&nbsp; &nbsp; # generate some file name&nbsp; &nbsp; # save the file in the `database_reports` folder used below&nbsp; &nbsp; return render_template('database.html', filename=stored_file_name)@app.route('/database_download/<filename>')def database_download(filename):&nbsp; &nbsp; return send_from_directory('database_reports', filename)在模板中,用于url_for生成下载网址。<a href="{{ url_for('database_download', filename=filename) }}">Download</a>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python