jQuery和django rest框架批量:发送列表

jQuery和django rest框架批量:发送列表,jquery,ajax,django,django-rest-framework,Jquery,Ajax,Django,Django Rest Framework,我需要使用django restframework批量混合向视图发送对象列表: class APIPicksView(mixins.ListModelMixin, bulk_mixins.BulkCreateModelMixin, generics.GenericAPIView): def get(self, request, *args, **kwargs): re

我需要使用django restframework批量混合向视图发送对象列表:

class APIPicksView(mixins.ListModelMixin,
                          bulk_mixins.BulkCreateModelMixin,
                          generics.GenericAPIView):

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        print(type(request.DATA)) /* Should be list */
        if isinstance(request.DATA, list):
            # Custom logic here
在浏览器端,我尝试发送对象数组(列表):

    var csrftoken = $.cookie('csrftoken');
    var data = [];
    for(var i = 0; i < picks.length; ++i) {
        data.push({pick:picks[i], priority:i, user:null});
    }

    $.ajax({
        type:"POST",
        url: "/api/foo/picks/",
        data: /* How should I format this data? */,
        sucess: function() { alert("Success!"); },
        dataType: "json",
        traditional:false, /* Should this be true? */
        crossDomain:false,
        beforeSend: function(xhr, settings) {
          xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    });
var csrftoken=$.cookie('csrftoken');
var数据=[];
对于(变量i=0;i<1.length;++i){
push({pick:picks[i],优先级:i,用户:null});
}
$.ajax({
类型:“POST”,
url:“/api/foo/picks/”,
数据:/*如何格式化此数据?*/,
suces:function(){alert(“Success!”);},
数据类型:“json”,
传统:假,/*这应该是真的吗*/
跨域:false,
发送前:功能(xhr、设置){
setRequestHeader(“X-CSRFToken”,CSRFToken);
}
});

如果查看请求头,您会注意到:

Content-Type:application/x-www-form-urlencoded; charset=UTF-8
这是不正确的json数据类型

您需要设置正确的内容类型并序列化数据:

$.ajax({
    type: "POST",
    url: "/api/articles/",
    data: JSON.stringify(data),
    sucess: function() { console.log("Success!"); },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    crossDomain:false,
    beforeSend: function(xhr, settings) {
      xhr.setRequestHeader("X-CSRFToken", csrftoken);
    }
});

谢谢!我可以在3小时内颁发赏金。。。所以请稍等。顺便说一句,请求有效,但从未调用success函数。@blaze这可能是因为函数名拼写错误(
success
)。