2016-06-13 54 views
0

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

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

我尝试了一些例子,从网络资源利用:

JS代码:

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

Python代码(Django的视图):

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

回答

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

没有Rest_framework我不能吗? –

0

您的JSON数据应该由JSON.stringify()这样被格式化:

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

它并不关心,它返回500错误 –

0
  • 403可能禁止,因为一个无效的CSRF令牌的
  • 500:您可能不会以后端预期的格式发布数据。你可以检查一下,看看它给出的错误响应是什么。
相关问题