2011-11-19 190 views
1

這可能是一個簡單的問題,我有一個表單,您可以在提交時將它重定向到另一個頁面,並將所有註釋顯示在列表中。我想知道如何將刪除按鈕添加到每個列表項目以刪除該特定評論。從數據庫中刪除列表項

謝謝你在前進,

db.define_table('discussion', 
       Field('comment', 'text')) 

def comment(): 
    form = SQLFORM(db.discussion, _class='test1') 
    if form.process().accepted: 
     redirect(URL('comment_results')) 
    return dict(form=form) 

def comment_results(): 
    items = db(db.discussion.id==db.discussion.id).select() 
    ???? erase = db(db.discussion.id==).delete() ???? 
    ### trying to create an erase button to delete the currently displayed comment ### 
    return dict(items=items, erase=erase) 

view: 
<html> 
    <head> 
     <link rel="stylesheet" href="{{=URL('static','css/test.css')}}"> 
    </head> 
     <body> 
      {{for item in items:}} 
      <li>{{=item.id}} Comment = {{=item.comment}}<button id="{{=erase}}">erase</button></li> 
      {{pass}} 
     </body> 
</html> 

*答案* 查看:

<html> 
    <head> 
     <link rel="stylesheet" href="{{=URL('static','css/test.css')}}"> 
    </head> 
     <body> 
      {{for item in items:}} 
      {{=item.comment}}<a href="{{=URL('delete', args=item.id)}}"> Delete</a> 
      {{pass}} 
     </body> 
</html> 

*我剛剛通過參數傳遞給刪除方法在控制器* 控制器:

def delete(): 
    query = db(db.discussion.id==request.args(0)).select().first() ## grabbing comment to be deleted from comment_results 
    remove = db(db.discussion.id==query).delete() 
    if remove: 
     redirect(URL('comment_results')) 
    return dict(remove=remove) 
+0

對不起,我沒有具體說明我使用的是web2py。事實證明,我所需要做的就是鏈接到我的控制器中的一個不同的刪除方法。我將編輯問題以顯示我所做的。 –

回答

1

,如果你看看這裏http://web2py.com/book/default/chapter/07#SQLFORM-and-insert/update/delete

他們提到一個叫做可消除對appadmin場,可能是它。

也許嘗試:

form = SQLFORM(db.discussion, _class='test1', deletable=True) 

爲一條線,看看它是否工作。

編輯:對不起,錯誤的領域。你必須創建一個表單。

我認爲這是它,因爲它說的頁面我聯繫上:

更新形式非常類似於創建表單除了它是 預先填充當前記錄,並預覽圖片。通過 默認deletable =真,這意味着更新表單將顯示一個 「刪除記錄」選項。

0

如果您使用的是Django,您將不得不通過模板代碼生成每個評論框的視圖控制器。我不知道你的數據庫結構如何,但每個評論可能有一個鏈接ID到原始文章和它自己的表中你自己的獨特ID將存儲評論。使用MVC u會生成這些評論框並呈現它們,同時保留評論控制器所需的唯一註釋ID和子例程操作;那麼當你擊中刪除,包含註釋的唯一ID的控制器將查詢數據庫和voiala通過您的MVC評論模板... 至少這就是我將如何處理這種評論系統時,利用MVC範例編碼

我希望你將擁有某種到位,以防止數據庫攻擊注射和用戶權限,以及支票......