Django:删除带有Javascript确认的视图,而不重定向到模板
我有一个可以使用Django DeleteView删除的模板。我希望在使用Javascript弹出窗口后删除数据 视图.pyDjango:删除带有Javascript确认的视图,而不重定向到模板,django,django-forms,django-templates,django-views,django-csrf,Django,Django Forms,Django Templates,Django Views,Django Csrf,我有一个可以使用Django DeleteView删除的模板。我希望在使用Javascript弹出窗口后删除数据 视图.py class ObjectNameDeleteView(DeleteView): model = ObjectName form_class = PostObjectName success_url = 'http://localhost:8000/impact/displayobjects/' DisplayObjects.html <
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_令牌%}
函数删除函数(e){
如果(!确认(“您确定要删除吗?”)){
e、 预防默认值();
}
}
单击“删除”按钮后,出现错误:
CSRF验证失败。请求已中止。
我如何才能做到这一点?从buton中删除
type='submit'
将类或id添加到表单中,然后在js
add
$(“#您的表单id”).submit()代码>
它仍然显示错误:“403禁止的CSRF验证失败。请求中止。”Url(“^person\u delete/(?P\d+)/$”,views.personDelete,'person\u delete')就是您的Url的样子吗?它是类视图还是基于def的视图?这意味着在本例中它是类视图put@method\u decorator(CSRF\u豁免)
在您的ObjectNameDeleteView类ObjectNameDeleteView(视图):@method\u decorator(csrf\u empture)
我将@csrf\u empture添加到URL.py中,它工作了,这要感谢django.views.decorators.csrf导入csrf\u empture路径('objects/delete/',csrf\u empture(views.objectnamedeteeview()),name='person\u delete'),
<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(View):
@method_decorator(csrf_exempt)
#then your logic