Django:使用 Javascript 确认删除视图而不重定向到模板

Django: Delete View with Javascript Confirmation without redirecting to Template

我有一个可以使用 Django DeleteView 删除的模板。我希望它在使用 Javascript 弹出窗口后删除数据。

Views.py

class ObjectNameDeleteView(DeleteView):
    model = ObjectName
    form_class = PostObjectName   
    success_url = 'http://localhost:8000/impact/displayobjects/'

DisplayObjects.html

<form method="POST" action="{% url 'person_delete' obj.pk %}">
{% csrf_token %}
<a href="{% url 'person_delete' obj.pk %}">
<button type="submit" class="btn btn-danger" onClick="deleteFunction()">Delete</button></a>
</form>

<script>
        function deleteFunction(e) {
            if(!confirm("Are you sure you want to delete?")){
                e.preventDefault();
            }            
        }
</script>

点击删除按钮后出现错误:

CSRF 验证失败。请求中止。

我怎样才能使这个工作?

从按钮中删除 type='submit'

在表单中添加class或id,然后在js中添加 $('#your-form-id').submit();

<form id='person-delete' method="POST" action="{% url 'person_delete' obj.pk %}">
{% csrf_token %}
<a href="{% url 'person_delete' obj.pk %}">
<button  class="btn btn-danger" onClick="deleteFunction()">Delete</button></a>
</form>


 function deleteFunction(e) {
            if(!confirm("Are you sure you want to delete?")){
                e.preventDefault();
            }else{
             $('#person-delete').submit();
            }            
        }

您的观点是 class 您必须在 ObjectNameDeleteView()

中的逻辑之前添加 @method_decorator(csrf_exempt)
class ObjectNameDeleteView(View):
       @method_decorator(csrf_exempt)
       #then your logic