我想要完成的工作就是从服务器删除文件('静态'文件夹,具体)。
我的jinja模板:
<table>
<tr>
{% for file in files_.items %}
<td data-title="title" style="text-align: center">{{ file.title }}</td>
<td data-title="download"><a href="{{ url_for('static', filename=file.file) }}">Download</a></td>
{% if current_user.username == "admin" %}
<td data-title="delete" style="text-align: center"><a href="{{ delete }}">Delete</a></td>
{% endif %}
</tr>
{% endfor %}
</table>
和我的职能:
@app.route('/upload/<path:filename>/', methods=['GET', 'POST'])
@login_required
def delete(filename):
item = db.session.query(File).get(filename)
os.remove(os.path.join(app.static_folder, item.filename))
db.session.query(File).filter_by(file=filename).delete()
db.session.commit()
return render_template('dashboard.html',delete=delete)
我尝试做的是点击html中的删除后,我想从服务器中删除数据库和文件中的记录。现在我不确定我调用此函数的方法是否正确,因为我已经尝试使用print作为原始日志系统,并且终端中没有任何东西,我会说函数没有被调用。另外我的猜测是我需要将文件名传递给它,所以我尝试了
{{ delete(filename=file.file) }}
但它返回了
UndefinedError:&#39;删除&#39;未定义
答案 0 :(得分:2)
{{ delete(filename=file.file) }}
告诉python“何时呈现模板,调用函数delete()”。您要做的是生成链接,单击此链接将调用删除端点。
因此,请使用{{ url_for('delete', filename=...) }}