如何将Angularjs帖子中的json数据发送到Django视图?

时间:2016-06-13 12:10:04

标签: javascript python angularjs json django

我需要使用Angularjs的POST请求向我的Django视图发送json数据。

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

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

JS代码:

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

Python代码(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错误(内部服务器错误)

3 个答案:

答案 0 :(得分:0)

服务代码

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")

答案 1 :(得分:0)

你的json数据应该由JSON.stringify()格式化,如下所示:

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

答案 2 :(得分:0)

  • 403 Forbidden可能是因为CSRF令牌无效
  • 500:您可能没有以后端期望的格式发布数据。您能否检查并查看它给出的错误响应。