我創建了一個Flask應用程序,它可以創建一個列表並將列表返回給HTML頁面。我還想將列表下載爲CSV文件。Flask是否可以顯示列表中的數據並提供下載鏈接?
到目前爲止,我理解如何以單獨的功能完成這些任務。
有沒有一種方法可以將這些功能合併爲一個,以便只創建一次列表,在HTML模板上顯示數據並提供下載鏈接?
請查看基本示例如下:
from flask import Flask, render_template, Response, url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
fruits = ['apple', 'pear', 'banana', 'grapes', 'mango']
return render_template('fruit.html', fruit=fruits)
@app.route('/fruits.csv')
def generate_fruit_file():
def generate():
fruits = ['apple', 'pear', 'banana', 'grapes', 'mango']
for f in fruits:
yield ''.join(f) + '\n'
return Response(generate(), mimetype='text/csv')
if __name__ == '__main__':
app.run(debug=True)
HTML模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
{% for f in fruit %}
<ul>
<li style="display: block;">{{ f }}</li>
</ul>
{% endfor %}
<a href="{{'/fruits.csv'}}">get file</a>
</body>
</html>
我相信你的問題缺乏一些背景。當你說你的應用程序生成了一個列表的東西,這意味着列表是從一些數據生成的。數據存儲在哪裏? – Born2Discover
你可以參考http://stackoverflow.com/questions/24577349/flask-download-a-file – SunilT
Born2Discover:數據是從API調用創建並存儲到數據庫中。在我的主要項目中,我使用生成器函數來收集數據。然後將生成器的輸出存儲到列表對象,然後將其保存到數據庫並在模板上顯示。 – user50083