2011-11-19 156 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范例编码

我希望你将拥有某种到位,以防止数据库攻击注射和用户权限,以及支票......