2017-05-26 94 views
1

我试图完成的是从服务器('静态'文件夹,具体)删除文件。烧瓶:从服务器和数据库中删除文件

我的神社模板:

<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我想删除数据库记录和来自服务器的文件。现在我不确定是否我的方法调用这个函数是正确的,因为我试图使用打印作为基本的日志系统,并且终端中没有任何东西,所以我会说功能没有被调用。也是我的猜测是,我需要通过文件名,所以我用尽

{{ delete(filename=file.file) }} 

但它返回

UndefinedError: 'delete' is undefined

回答

2

模板{{ delete(filename=file.file) }}告诉蟒蛇“当渲染模板,调用函数删除( )”。你想要做的是生成链接,点击后,将会呼叫删除端点。因此,使用{{ url_for('delete', filename=...) }}