我是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'吗?
答案 0 :(得分:1)
url_for()
需要功能名称,而不是route()
中的网址。
您的函数的名称为deldir
,而参数的名称为file_name
,因此您拥有
url_for('deldir', file_name=file_name)