我的Web应用程序具有可视化功能,用户可以通过from ...day
to ...day
(开始日期到结束日期)查看图表(平均值,标准偏差),其中(生产线)然后请求SQL连接数据库。这是可视化形式。 :
在用户请求后,我的网络应用程序将显示大约31个图表,我添加3个按钮用于下载文件,每个网页中的图表都是这样的。 (例如,图表的第1,2号):
这是我的javascript创建图表等文件.html
(spc_chart.html)但尚未将数据框传递给.html
:
我拥有3个数组中的平均图表数据,标准图表数据,原始数据(使用avg,Std计算)的所有pandas数据框(名称为:ChartData Avg,ChartData Std,原始数据)。
我只知道如何下载文件必须在每个按钮上添加href="/..."
并在python中设置@app.route('/...')
然后将SQL发送到@app.route('/...')
的每个def并在计算后将数据帧传递给web。 ref(Flask: Download a csv file on clicking a button)但我不知道如何在另一个@app.route(/...)
中从def传递用户的SQL请求。
有没有办法将所有pandas数据帧传递到图表1,2,3,...中每个下载文件的按钮,或者将SQL发送到另一个app.route
中的def?
您可以使用以下函数首先以csv格式创建数据框:
def build_csv_data(dataframe):
csv_data = dataframe.to_csv(index=False, encoding='utf-8')
csv_data = "data:text/csv;charset=utf-8," + quote(csv_data)
return csv_data
然后为您的下载链接创建一个回调函数,如下所示:
@app.callback(Output('download_link', 'href'), [<your dataframe input variables>])
def callback_build_csv_data(dataframe):
return build_csv_data(dataframe)
最后在页面布局中添加下载链接,如下所示:
html.A('Download Data',
id='download_link',
download="rawdata.csv",
href="",
target="_blank"
),
希望这很有用。