2017-05-26 93 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=...) }}