烧瓶路径传递但参数返回错误

时间:2019-05-04 23:02:57

标签: python flask

我是Flask的新手。我的代码有问题。我希望我的应用删除目录中的指定文件。

首先,这是我的代码,用于以列表形式显示指定目录中的所有文件:

@app.route('/dirfile')
   def dirfile():
       path = './static/pickle/'
       lst = os.listdir(path)
       return render_template('dirfile.html', lst=lst)

这是我的dirfile.html代码,显示目录中的所有文件。

 {% for file_name in lst %}
    <ul class="list-group ">
      <li class="list-group-item ">
        <div class="row">
          <div class="col">
            {{ file_name }}
          </div>
          <div class="col">
            <a
              href="{{ url_for('deldir/{{file_name}}') }}"
              class="btn btn-danger btn-sm float-right"
              >Delete</a
            >
          </div>
        </div>
      </li>
    </ul>
  {% endfor %}

如果您注意到了,我添加了一个删除按钮以对列表中的指定文件执行删除。

我的删除功能:

@app.route('/deldir/<string:file_name>')
   def deldir(file_name):
       path = './static/pickle/'
       base = file_name
       fullpath = path + base
       os.remove(fullpath)
       return redirect(url_for('dirfile'))

但是它返回了以下错误:

  

werkzeug.routing.BuildError:无法为端点'deldir / {{file_name}}'建立url。您是说'dirfile'吗?

1 个答案:

答案 0 :(得分:1)

url_for()需要功能名称,而不是route()中的网址。

您的函数的名称为deldir,而参数的名称为file_name,因此您拥有

 url_for('deldir', file_name=file_name)