我正在努力在烧瓶中复制一个 tkinter 接口。我有使用“to_html()”在页面上显示的熊猫数据框。我使用了[本教程][1]。但我需要创建按钮来下载数据框。
创建和下载数据帧的函数位于其自己的目录“/testmodule”中的自定义模块中。下载数据帧的函数与创建和显示数据帧的函数是分开的。
下面是 testmodule.py 的示例代码:
import pandas as pd
from Flask import render_template
def df_test():
df1 = pd.DataFrame(
{
'terms' : ['term1','term2'],
'code1': ['1234x', '4321y'],
'code2': ['2345x','5432y'],
'code3': ['3456x','6543y']
}
)
df2 = pd.DataFrame(
{
'name': ['Dan','Sara','Conroy'],
'rate': ['3','3.5','5.2'],
'location': ['FL','OH','NM'],
'code': ['4444g','6543y','2345x']
})
return render_template('view.html',tables=[df1.to_html(classes='female'), df2.to_html(classes='male')],
titles = ['na', 'Codes', 'People'])
def download_df():
output_file = 'codes_people.xlsx'
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
df1.to_excel(writer, sheet_name="Codes")
df2.to_excel(writer, sheet_name="People")
workbook = writer.book
worksheet1 = writer.sheets['Codes']
worksheet2 = writer.sheets['People']
writer.save()
我已经尝试为下载编写一个路由,但是得到了未定义数据帧值的错误,我理解,因为我正在导入一个对 download_df 的函数调用,与创建 dfs 的函数分开。我只是不知道如何将 df1 和 df2 的值从第一个函数传递到第二个函数中,一旦它位于 routes.py
我将有一些按钮,允许下载从现有 2 的列中制作的新 dfs。
按钮是否可以从模板本身调用下载函数(download_df),或者只能通过在 routes.py 中设置函数来完成?如果 routes.py,我如何将 df 变量传递给路由?或者,我需要创建一个临时文件吗?
[1]:https ://sarahleejane.github.io/learning/python/2015/08/09/simple-tables-in-webapps-using-flask-and-pandas-with-python.html/ \