在我的情况下,可以从以下位置删除实例模型:
默认情况下,调用删除视图时:
get
函数调用' confirm_delete'模板。相反,我希望弹出/模态出现,如果在模态中单击delete
将删除对象如果delete
操作在ListView上,删除后用户将保留在ListView上,ListView内容将更新
如果delete
操作在DetailView上,删除后用户将被重定向到ListView或其他页面(取决于其他规则)
-
所以我想知道如何在删除时执行Ajax调用,如何根据我在操作之前的位置获取条件成功URL。
答案 0 :(得分:4)
对于DetailView
,您只需使用以下表单:
<form action="{% url "app:delete" object.id %}" method="post">
{% csrf_token %}
<button onclick="return confirm('Are you sure?');">Delete</button>
</form>
单击该按钮将打开确认对话框。如果用户点击OK
,则会提交表单。这将删除对象并重定向到confirm_delete
页面重定向的相同方式。
对于ListView
,只需向POST
发送DeleteView
请求,并在成功时重新加载当前页面以更新ListView
。您如何发送AJAX请求取决于您是否使用任何库,但使用jQuery可以按如下方式完成:
$.ajax('{% url "app:delete" object.id %}', {
method: 'POST',
success: function() {
window.location.reload();
},
});
注意:不要忘记包含csrf_token
以使AJAX请求生效。有关详细信息,请参阅docs。