这可能是一个简单的问题,我有一个表单,您在评论中将其重定向到提交时的另一个页面,并在列表中显示所有注释。我想知道如何为每个列表项添加一个擦除按钮以删除该特定注释。
提前谢谢你,
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>
*我刚刚将args传递给控制器中的delete方法 控制器:
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 :(得分:1)
如果你看这里http://web2py.com/book/default/chapter/07#SQLFORM-and-insert/update/delete
他们提到了一个名为apptable的可删除字段,可能是它。
也许试试:
form = SQLFORM(db.discussion, _class='test1', deletable=True)
查看该行是否有效。
编辑:对不起,错误的字段。你必须创建一个表单。
我认为就是这样,因为它在我链接的页面上说:
更新表单与创建表单非常相似,除非它是 预先填充当前记录并预览图像。通过 default deletable = True表示更新表单将显示 “删除记录”选项。
答案 1 :(得分:0)
如果你使用的是Django,你必须通过我想象的模板代码为每个评论框生成一个视图控制器。我不知道你的数据库是如何构建的,但是每条评论可能都有一个原始文章的链接ID,以及你将存储评论的表中的唯一ID。使用MVC你会生成那些注释框并在保留唯一注释ID和注释控制器需要具有的子程序操作的同时渲染它们;然后当你点击删除时,包含评论的唯一ID的控制器将通过你的MVC评论模板查询数据库和voiala ... 至少那就是我在使用MVC范式编码时如何处理这样的评论系统
我希望你能有一些检查来防止数据库注入攻击和用户权限......