我可以在Django模板中使用for循环删除模型实例吗?

时间:2015-01-04 20:26:41

标签: django-templates django-views

使用下面的这个例子,我试图找到一种方法来删除"删除"按钮删除条目。

VIEWS.PY

latest_entries=Entry.objects.order_by('-pub_date')[:16]



TEMPLATE.HTML

{% for entry in latest_entries %}
   entry.name <div class="delete">delete</div>
   entry.price
   entry.picture
   entry.sellername

{% endfor %}

通过阅读Django文档,我了解到我可以通过执行以下操作删除视图中的对象:

b = Blog.objects.get(pk=1)
b.delete()

但是我不确定如何将此链接与模板中的for循环链接。

可以从我的模板中的for循环中删除模型实例,还是需要转到另一条路径才能完成此任务?

1 个答案:

答案 0 :(得分:0)

您不能(并且不应该因安全问题而尝试)从模板中删除模型实例,您应该将操作传达给视图,然后将其从视图中删除。

一种选择是使用Javascript并通过AJAX发送请求。然后,在django url-&gt;视图中接收呼叫。一个简单的视图示例可能如下所示。

def delete_object(request):
   if request.is_ajax():
      objeect_id = request.POST.get('object_id')
      deleted_entry = Entry.objects.get(id=object_id)
      deleted_entry.delete()

再次阅读您的问题后,我不明白为什么要使用forloop删除对象。是否存在触发删除的事件?如果事件是用户单击按钮,则该按钮应指向Django URL,然后该URL应指向该视图。