jquery 500(内部服务器错误)

时间:2016-09-18 09:22:21

标签: jquery ajax django

我一直收到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'})

1 个答案:

答案 0 :(得分:0)

由于a.save(),您收到了500错误。

CartItem.objects.filter(id=item_id).delete()根据docs -

返回一个元组
  

删除方法很方便地命名为delete()。这种方法   立即删除对象并返回对象数   删除了一个字典,其中包含每个对象类型的删除次数

>>> 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例外。