如何将 json 数据从 Angularjs post 发送到 Django 视图



我需要使用来自Angularjs的POST请求将json数据发送到我的Django视图。

我需要使用此 json 作为 json 格式从数据库中获取数据。

我尝试了一些使用网络资源的示例:

JS代码:

$http({
   method: 'POST',
   url: '/mycard/list',
   data:  $.param({test: json})
});

Python Code(Django View):

def product_list(request):
   if len(request.META['QUERY_STRING']) > 0:
       data = request.body
       data = json.loads(data)
       print data
   else:
       f = open('./mytest.txt','r')
       data = f.read()
   return HttpResponse(data, mimetype='application/json')

但它返回 403 错误,有时返回 500 错误(内部服务器错误)

服务代码

var promise = $http({
                      method: 'post',
                      url: '/mycard/list',
                      data:data,
                      contentType:'application/json; charset=UTF-8',
                    });
return promise;

Python rest api

@csrf_exempt
@api_view(['GET','POST'])
def product_list(request):
    if request.method == 'POST':
        try:
            stream = StringIO(request.body)
            data = JSONParser().parse(stream)
        except ValueError:
            return Response(json.dumps(ValueError, default=json_util.default))
        return Response(json.dumps(data, default=json_util.default))
    else:        
        return Response("failure")

您的 JSON 数据应按JSON.stringify()格式格式化,如下所示:

$http({
   method: 'POST',
   url: '/mycard/list',
   data:  JSON.stringify({test: json})
});
  • 403 禁止可能是因为无效的 CSRF 令牌
  • 500:您可能没有以后端期望的格式发布数据。您能否检查一下,看看它给出的错误响应是什么。