delete需要使用post提交,所以需要使用js模拟post
<a href="#" data-method="POST" data-url="/backend/adv-position/delete/{{data.id}}" data-confirm="确定删除么?">删除</a>
$(".grid-view table tbody").find('a[data-method="POST"]').each(function() {
$(this).click(function() {
var confirmTxt = $(this).attr('data-confirm');
if(confirm(confirmTxt)) {
var url = $(this).attr('data-url');
var form = document.createElement('form');
var csrfInput = document.createElement('input');
csrfInput.name = 'csrfmiddlewaretoken';
csrfInput.value = $.cookie('csrftoken');
form.appendChild(csrfInput);
form.method = "post";
form.action = url;
form.style.display = 'none';
document.body.append(form);
form.submit();
return form;
}
return false;
})
})
方式1:
class AdvPositionDeleteView(DeleteView):
model = AdvPosition
success_url = '/backend/adv-position/index'
方式2:
使用post
class AdvPositionDeleteView(DeleteView):
def post(self, request, *args, **kwargs):
adv_positin = AdvPosition.objects.get(id = self.kwargs['pk'])
adv_positin.delete()
return redirect('/backend/adv-position/index')