You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flask应用中检测按钮点击并触发DataFrame下载?

Flask页面按钮触发DataFrame下载的实现方法

1. 给下载功能单独写个路由

把你已经写好的下载代码封装成独立的Flask路由,这样点击按钮时能直接请求这个接口:

# views.py
from flask import make_response

@mod.route('/download-report')
def download_report():
    # 这里要获取到你要导出的DataFrame df
    # 要是df是/report路由生成的,要么把生成逻辑抽成公共函数,要么用session存(注意session容量限制)
    df = ... # 生成或获取目标DataFrame
    resp = make_response(df.to_csv())
    resp.headers["Content-Disposition"] = "attachment; filename=export.csv"
    resp.headers["Content-Type"] = "text/csv"
    return resp

2. 在页面里添加下载按钮

根据需求选下面两种方式:

方式一:直接用链接当按钮(最简单)

不用写JS,直接让链接指向刚才的下载路由,再用CSS改成按钮样式就行:

<!-- report.html -->
<a href="/download-report" style="padding: 8px 16px; background: #007bff; color: white; text-decoration: none; border-radius: 4px;">下载CSV报告</a>

方式二:按钮配合JS触发(适合需要前置逻辑的场景)

如果点击按钮前要做验证、加载提示之类的操作,就用JS监听点击事件:

<!-- report.html -->
<button id="downloadBtn" style="padding: 8px 16px; cursor: pointer;">下载CSV报告</button>

<script>
document.getElementById('downloadBtn').addEventListener('click', function() {
    // 这里可以加前置操作,比如显示"正在下载..."
    window.location.href = '/download-report';
});
</script>

额外提醒

  • 要是DataFrame是用户访问/report时动态生成的,得保证/download-report能拿到相同的数据——要么把生成df的代码抽成公共函数,两个路由都调用;要么用session暂存(别存太大的数据)。
  • 涉及用户私有数据的话,要在/download-report路由里加权限验证,防止别人乱下。

内容的提问来源于stack exchange,提问作者irina_ikonn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:47:45