jquery 500(内部服务器错误)
问题描述:
我不断收到500服务器响应,它发送item_id但无法加载函数,所以我无法获取响应状态和消息。jquery 500(内部服务器错误)
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()
返回一个元组作为每docs -
该删除方法,适宜地,被命名为删除()。这种方法 立即删除对象,并返回已删除对象 的数量和字典中删除的每个对象类型
>>> e.delete() # from the docs
(1, {'weblog.Entry': 1})
数量所以,你不能调用保存上。
另一种实现将
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
例外。
您可以粘贴runserver的堆栈跟踪 - 它会在运行'runserver'命令的终端上得到500响应时生成。 – algrebe
“元组”对象没有“保存”属性 –
我删除了保存并且完美地运行 –