在我的例子中,实例模型可以从以下位置删除:
- 一个ListView继承View
- 一个DetailView继承View
默认情况下,调用删除 View 时:
get
函数调用“confirm_delete”模板。相反,我希望出现一个弹出窗口/模式,如果在模式中单击delete
将删除对象如果
delete
操作在 ListView 上,删除后用户将保留在 ListView 上,ListView 内容将更新如果
delete
操作在 DetailView 上,删除后用户将被重定向到 ListView 或另一个页面(取决于其他规则)
--
所以我想知道如何在删除时执行 Ajax 调用,如何根据操作前的位置在删除中有条件成功 url。
最佳答案
对于 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
可以简单地向 DeleteView
发送一个 POST
请求,成功后重新加载当前页面以更新 ListView
。如何发送 AJAX 请求取决于您是否使用任何库,但使用 jQuery 可以按如下方式完成:
$.ajax('{% url "app:delete" object.id %}', {
method: 'POST',
success: function() {
window.location.reload();
},
});
注意:不要忘记包含 csrf_token
以使 AJAX 请求正常工作。查看docs获取更多信息。
关于ajax - Django 删除带有确认弹出窗口和多个成功 url 的 CBV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863917/