【发布时间】:2018-12-17 08:44:22
【问题描述】:
您好,我对烧瓶和 python 还很陌生
我正在尝试创建一个简单的 Web 应用程序,其中列出了多个商店编号,并单击超链接下载 csv 文件(我从 SQL 服务器获取此数据 - 将其放入数据框并使用 to_csv 进行转换动态到 csv)
我的问题是——如何动态生成路由@app.route("/getCSV/" and def getCSV..)?
任何帮助将不胜感激。
以下案例仅包含 2 家商店,以后可能会增加到 5 或 100 家..
我已经粘贴了下面的代码,我在 html 中使用 Jinja 模板
app.py
from flask import Flask, render_template, redirect, request, Response
from datetime import datetime
import pandas as pd
import pyodbc
#Define app
app = Flask(__name__)
#Db connection
ikbconn = pyodbc.connect('Driver={SQL Server};Server=xxxxx;Database=xx;uid=sa;pwd=xxxxx')
storelist = ['11','72']
@app.route("/")
def hello():
return render_template('template.html',my_storelist = storelist)
@app.route("/getCSV/11")
def getCSV11():
selectquery = "EXEC temp_POGListSP" + " " + "11"
data = pd.read_sql(selectquery, ikbconn)
csv11 = data.to_csv()
return Response(
csv11,mimetype="text/csv",headers={"Content-disposition":"attachment; filename=POGList_11.csv"})
@app.route("/getCSV/72")
def getCSV72():
selectquery = "EXEC temp_POGListSP" + " " + "72"
data = pd.read_sql(selectquery, ikbconn)
csv72 = data.to_csv()
return Response(
csv72,mimetype="text/csv",headers={"Content-disposition":"attachment; filename=POGList_72.csv"})
app.run(debug=True)
template.html
<html>
<body>
<h2>Planogram List for Stores</h2>
{% for n in my_storelist %}
<p><a href="/getCSV/{{ n }}"> {{ n }} </a></p>
{% endfor %}
</body>
</html>
【问题讨论】:
标签: python python-3.x pandas flask jinja2