在Django DeleteView中使用bootbox,可以通过以下步骤实现:
from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy
from django.http import JsonResponse
class BootboxDeleteView(DeleteView):
model = YourModel
success_url = reverse_lazy('your_success_url')
def delete(self, request, *args, **kwargs):
self.object = self.get_object()
self.object.delete()
data = {'message': '删除成功'}
return JsonResponse(data)
def get(self, request, *args, **kwargs):
return self.post(request, *args, **kwargs)
在上面的代码中,我们重写了delete
方法和get
方法。delete
方法用于处理删除操作,通过调用get_object()
获取要删除的对象,并调用delete()
方法进行删除。然后,我们返回一个包含成功消息的JSON响应。
get
方法被重写为调用post
方法,这是因为bootbox默认使用POST请求来执行删除操作。
<a href="{% url 'your_delete_url' pk=object.pk %}" class="btn btn-danger delete-btn">删除</a>
<script>
$(document).ready(function() {
$('.delete-btn').click(function(e) {
e.preventDefault();
var deleteUrl = $(this).attr('href');
bootbox.confirm({
message: "确定要删除吗?",
buttons: {
confirm: {
label: '确定',
className: 'btn-danger'
},
cancel: {
label: '取消',
className: 'btn-secondary'
}
},
callback: function(result) {
if (result) {
$.ajax({
url: deleteUrl,
type: 'DELETE',
success: function(response) {
// 处理删除成功后的逻辑
bootbox.alert(response.message);
// 刷新页面或其他操作
},
error: function(xhr, status, error) {
// 处理删除失败后的逻辑
bootbox.alert('删除失败');
}
});
}
}
});
});
});
</script>
在上面的代码中,我们使用了bootbox的confirm
方法来显示一个确认对话框。当用户点击确认按钮时,我们使用jQuery的ajax方法发送一个DELETE请求到删除视图的URL。成功时,我们显示一个成功消息,并执行其他逻辑。失败时,我们显示一个错误消息。
这样,你就可以在Django DeleteView中使用bootbox来实现删除操作了。
推荐的腾讯云相关产品:腾讯云云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm
云原生正发声
Elastic 实战工作坊
企业创新在线学堂
DBTalk技术分享会
Techo Day
云+社区技术沙龙[第9期]
企业创新在线学堂
领取专属 10元无门槛券
手把手带您无忧上云