我从另一个函数调用函数。
我正在调用的函数
@app.route('/csv/')
def download_csv(p):
csv = p
response = make_response(csv)
cd = 'attachment; filename=RosterUnified.csv'
response.headers['Content-Disposition'] = cd
response.mimetype='text/csv'
return response
在我的HTML中,这与按钮点击“下载”相关联。
我是从内部打电话来的:
@app.before_request
def ros_before_app():
.
.
.
z=open(Filename1)
with z as f:
p = f.read()
download_csv(p)
z.close()
else:
z1=open(Filename)
with z1 as f1:
p = f1.read()
download_csv(p)
控制台出错:
return self.view_functions[rule.endpoint](**req.view_args)
TypeError: download_csv() missing 1 required positional argument: 'p'
单击和“下载”按钮会导致下载失败,服务器问题
答案 0 :(得分:1)
在Flask中,@app.route('/')
装饰器必须包含传递给函数的任何参数。您可以通过向网址添加<var>
标记来完成此操作。所以您拥有的代码可能如下所示,
@app.route('/csv/<p>')
def download_csv(p):
csv = p
# continue code here...
如果网址为csv
,则变量file
等于.../csv/file
。请注意我们如何将<p>
放入已传入函数的参数中,而不是说n
。
有关此装饰器中传递变量的更多信息,请查看Flask's Variable Rules。