如何通过模板从数据库中删除记录?例如,我有一个从数据库接收并显示在页面上的评论列表,在它们旁边有一个带有篮子的图标,当我单击该图标时,应从数据库中删除该条目。>
答案 0 :(得分:0)
您的删除按钮(或输入)可能位于表单内部,因为您可能希望使用POST进行删除,从而避免了通用DeleteView的默认行为(GET会显示确认页面,但它不是很好的UX)。我想你正在做一个for循环:
模板:
{% for object in object_list %}
...
<form method="POST" id="{{object.pk}}" action="/delete_url/{{object.pk}}/" ...> {%csrf_token%}
<button class="your-class" id="{{object.pk}}" method="submit" ...>
</form>
...
{% endfor %}
在您的urls.py中定义网址路径:
from your_path.views import MyDeleteView
...
path("/delete_url/<pk>/", MyDeleteView.as_view()),
现在,您应该定义删除视图。最简单的方法是从通用视图继承DeleteView:
from django.views.generic.edit import DeleteView
from your_path.models import MyModel
class MyDeleteView(DeleteView):
model = MyModel
sucess_url = "/home/"
对于删除确认,您可以使用javascript。这是我使用的示例,可以随时进行调整:
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10"></script>
<script type="text/javascript">
$(function () {
$(".your-class").click(function(e){
e.stopPropagation();
e.stopImmediatePropagation();
e.preventDefault();. //prevent instant submit
Swal.fire({
title: 'Deseja deletar este usuário? Esta ação não poderá ser desfeita.',
buttonsStyling: false,
confirmButtonText: "<i class='la la-trash'></i> Deletar",
customClass: {
confirmButton: "btn btn-danger",
cancelButton: "btn btn-default"
},
showCancelButton: true,
cancelButtonText: `Cancelar`,
icon: "warning",
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Deletando colaborador...',
timer: 1000,
showCancelButton: false,
showConfirmButton: false
});
var id = $(this).attr('id');
setTimeout(function() {
$('form#'+id).submit();
}, 1000); // 1 second delay
}
// else if (result.isDenied) {
// Swal.fire('Changes are not saved', '', 'info');
// e.preventDefault();
// }
});
});
});
</script>
如果您只想要最简单的GET渲染确认页面而没有任何JavaScript,请删除表单标签并使用锚点( ...)>