从另一个调用一个函数的烧瓶

时间:2016-12-13 07:07:37

标签: python python-3.x flask jinja2

我从另一个函数调用函数。

我正在调用的函数

@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'
单击

和“下载”按钮会导致下载失败,服务器问题

1 个答案:

答案 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