当前位置: 首页 > 知识库问答 >
问题:

使用烧瓶在同一超文本标记语言页面上返回带有下载选项的响应

晋西岭
2023-03-14

我有一个基本的flask应用程序,其中数据帧由两个CSV组成,并发生一些转换,在HTML页面上,可以以表格格式看到最终结果数据帧。在这里之前都很好用。

除此之外,我还希望用户可以选择下载与CSV相同的表。

下面是我的烧瓶代码:

from flask import *
import pandas as pd
app = Flask(__name__)
@app.route("/tables")
def show_tables():
     df1 = pd.read_csv('daily.csv')
     df2 = pd.read_csv('companies.csv')
     df1['date']= pd.to_datetime(df1['date'], format='%m/%d/%y')
     df3 = pd.merge(df1,df2,how='left',on='id')
     dates = pd.DataFrame({"date": pd.date_range("2017-01-01", "2017-01-10")})
     df4 = (df3.groupby(['id', 'name'])['date', 'value']
 .apply(lambda g: g.merge(dates, how="outer"))
 .fillna(0)
 .reset_index(level=[0,1])
 .reset_index(drop=True))
     df4 = df4.sort_values(by=['id','date'])
     df4.value = df4.value.astype(int)
     df4['difference'] = df4.groupby('id')['value'].diff()
     return render_template('view.html',tables=[df4.to_html(classes='Company_data')],
     titles = [ 'Company_data'],filename=df4.to_csv())
@app.route('/tables_download/<filename>')
def tables_download(filename):
    return response(filename)  //--right way to pass the csv file?


if __name__ == "__main__":
    app.run()

下面是我的超文本标记语言代码:

      <!doctype html>
<title>Simple tables</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
  <h1>Company data</h1>
  {% for table in tables %}
    <h2>{{titles[loop.index]}}</h2>
    {{ table|safe }}
  {% endfor %}
</div>

<a href="{{ url_for('tables_download', filename=filename) }}">Download</a>

在我的HTML页面上,我甚至看不到下载选项。

正在努力找出问题所在所以寻求帮助

共有1个答案

贺兴昌
2023-03-14

正如Flask API中所述,我认为实现这一点的方法是send\u filesend\u from\u directory

@app.route('/uploads/<path:filename>')
def download_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)

这些都记录在http://flask.pocoo.org/docs/0.12/api/

send\u from\u directory安全(如果使用正确),因为它将可下载的文件限制为仅限于特定目录中的文件,防止任何“黑客”下载您的私人信息。

 类似资料:
  • 我想开发一个包含注册和登录按钮的登录HTML页面。在运行时的HTML页面中,我可以选择任何按钮(登录/注册)。点击注册页面时,页面应重定向至注册JSP程序,点击登录页面时,页面应重定向至登录Servlet程序。现在的问题是,我必须在html页面中提到表单的实际方法?如何解决这个问题?

  • 已经讨论过这些话题,但没有对我起作用: Topic1我的项目中没有注释 这是我用于Thymeleaf的依赖项: 我的新控制器名为 名为uploadView的HTML。html 项目结构: 我的评论:我仍然得到一个白标签错误页面,位于本地主机:8082/uploadendpoint 编辑1: 我的SpringBootApplication类 <代码>应用程序。属性文件: 服务器的日志 白标错误页面:

  • 问题内容: 我正在尝试使用Flask创建一个Web应用程序,该应用程序允许用户上传文件并将其提供给其他用户。现在,我可以将文件正确 地上 传到 upload_folder了 。但是我似乎找不到找到让用户下载回来的方法。 我将文件名的名称存储到数据库中。 我有一个为数据库对象服务的视图。我也可以删除它们。 在我的HTML中,我有: 和下载视图: 但它正在返回: 未找到 在服务器上找不到请求的URL。

  • 我想选择强标签内的文本,但不在其下的div。。。 有没有可能直接与jsoup合作? 我的选择尝试(不工作,选择强标签内的完整内容): HTML:

  • 我是新来的。我想解析html,但问题是我们必须在中指定的URL,我将在运行时从其他页面响应此URL。有没有办法将收到的网址传递到中?我读过这样的东西: 但是我不知道如何使用它。我很想知道是否有其他方法比jsoup更好。

  • 对于上面的html内容,我如何使用Jsoup解析并获取文本 当我使用 我得到了这样的东西