我需要使用来自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:您可能没有以后端期望的格式发布数据。您能否检查一下,看看它给出的错误响应是什么。