2017-07-07 47 views
0

我想删除一个对象。这是HTML,当你点击按钮todo应删除(我想打电话给delete_todo): -在Django中删除一个对象

<ul> 
      {% for all %} 


     </ul> 

这是views.py,

回答

1

您需要更改一些东西你码。

url(r'^(?P<todo_id>[0-9]+)/$', views.delete_todo, name='delete_todo'), 

然后,你需要改变delete_todo本身:

def delete_todo(request, todo_id): 
    instance = get_object_or_404(Todo, pk=todo_id) 
    instance.delete() 
    return redirect('index') 

在这里,您可以URLPATTERN delete_todo你需要添加参数都在改变,这使得在视图来确定要删除的内容对象的 第一使用get_object_or_404函数来获取带有id的对象。

最后,你需要通过URL的参数从模板查看:

<form action="{% url 'lists:delete_todo' todo_id=todo.id %}" method=post> 
     <input id="submit" type="button" value="Click" /> 
</form> 
+0

只是改变了它,我点击按钮,但什么也没有发生。 – pycode

+1

我明白了,这与CSRF验证有关。非常感谢。 – pycode

0

只是为了对使用的形式和CSRF的补充说明:这是必要的,以确保您的应用程序的不同的用户可以不要删除不属于他们的内容。

在模板中,你需要包括CSRF标记为这样:

<form method="post" action={% url 'delete_todo' todo_id=todo.id %}> 
    {% csrf_token %} 
    <input type="button" id="submit" value="Delete" /> 
    </form>