【问题标题】:flask calling a function from another烧瓶从另一个调用函数
【发布时间】:2016-12-13 07:07:36
【问题描述】:

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

我正在调用的函数

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

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

【问题讨论】:

  • 如果你在download_csv函数中使用p作为参数,它必须在路由中。在此示例中,您不能在 url 中放置函数(只有 string 或 int 有效)。您必须导入 p 函数。

标签: python python-3.x flask jinja2


【解决方案1】:

在 Flask 中,@app.route('/') 装饰器必须包含任何传递给函数的参数。您可以通过在 URL 中添加 <var> 标记来做到这一点。所以你的代码可能看起来像这样,

@app.route('/csv/<p>')
def download_csv(p):
  csv = p
  # continue code here...

变量,如果 URL 是 .../csv/filecsv 等于 file。请注意,我们不是说&lt;p&gt;,而是输入一个传递给函数的参数。

有关在此装饰器中传递变量的更多信息,请查看Flask's Variable Rules

【讨论】:

  • 谢谢,现在我下载失败,控制台出现以下错误,这是什么意思
  • [] [] 127.0.0.1 - - [13/Dec/2016 13:05:43] "GET /csv/ HTTP/1.1" 404 -
  • 嗯,404 错误是找不到或不存在的东西。 127.0.0.1 是本地主机。我认为这是说它无法在本地主机上获取文件“/csv/HTTP/1.1”;但是,我几年前开始的 Web 开发不太擅长。
猜你喜欢
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
相关资源
最近更新 更多