[英]jquery 500 (Internal Server Error)
我不断收到500个服务器的响应,它发送item_id但无法加载功能,因此我无法获得resp状态和消息。
var remove_item_request = function(item_id){
$.post(
'/remove/item/',
{
item_id:item_id,
},
function(resp){
console.log(resp)
if(resp.status==200){
alert('Removed!!');
document.location = 'buy-requests/show/';
}
else{
alert(resp.message);
}
}
);
}
这是我的view.py:
def remove_item(request):
if request.method == "POST":
item_id = int(request.POST.get('item_id', None))
if item_id is None:
return HttpResponse(status=400)
else:
a = CartItem.objects.filter(id=item_id).delete()
a.save()
return JsonResponse({'status': 200, 'message': 'item Removed'})
else:
return JsonResponse({'status': 400, 'message': 'invalid request type'})
由于a.save()
导致出现500错误。
CartItem.objects.filter(id=item_id).delete()
根据文档返回一个元组-
方便地,将delete方法命名为delete()。 此方法立即删除对象,并返回删除的对象数和带有每种对象类型的删除数的字典
>>> e.delete() # from the docs
(1, {'weblog.Entry': 1})
因此,您不能为此调用save。
一个替代的实现是
def remove_item(request):
if request.method != "POST":
return JsonResponse({'status': 400, 'message': 'invalid request type'})
item_id = int(request.POST.get('item_id', None))
if item_id is None:
return HttpResponse(status=400)
# get the item out
item = CartItem.objects.filter(id=item_id).first()
if item is None:
# it does not exist ? return the same status code
return HttpResponse(status=400)
item.delete()
# if you really want to cross check
# num_deletes, num_deletes_per_object_type = item.delete()
# num_deletes should be greater than zero, and in your case == 1
return JsonResponse({'status': 200, 'message': 'item removed'})
如果id是唯一的,则可以使用CartItem.objects.get
如果未找到,则会引发CartItem.DoesNotExist
异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.