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
我有一个可以使用 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