使用下面的这个例子,我试图找到一种方法来删除"删除"按钮删除条目。
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循环中删除模型实例,还是需要转到另一条路径才能完成此任务?
答案 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应指向该视图。