如果要全部下载,我有一个名为/showall
的路由页面,其中显示来自sqlite3 DB的所有几行以及一个名为“下载CSV”的按钮。
我的display.html
如下所示:
<a href="/download/{{ value }}" target="blank"><button>Download CSV
<i class="zmdi zmdi-arrow-right"></i>
</button></a>
我的app.py
如下所示:
@app.route('/showall', methods=["GET"])
def showall():
title = "Display"
data = database.get_all(Registers)
with open('/tmp/download.csv', 'w') as f:
out = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
header = Registers.__table__.columns.keys()
out.writerow(header)
for rec in data:
out.writerow([getattr(rec, c) for c in header])
return render_template("display.html", title=title, data=data, value='download.csv')
@app.route('/download/<file_name>')
def download(file_name):
try:
return send_file("/tmp/" + file_name,
attachment_filename='all_register.csv',
as_attachment=True)
except Exception as e:
return str(e)
/showall
页面打开后,我将鼠标悬停在“下载”按钮上,我可以看到重定向链接为/download/download.csv
,但是单击按钮后,一切都没有。
但是奇怪的是,如果我转到showall
的页面源并单击页面源中的链接,则它将下载csv。
如何解决此问题以及页面中缺少的内容?
答案 0 :(得分:0)
<form action="/showall" enctype="multipart/form-data" method="get">
<a href="/download/{{ value }}" target="blank"><button>Download CSV
<i class="zmdi zmdi-arrow-right"></i>
</button></a>
</form>