我的问题
我的问题是,当通过帖子将json文档发送到休息框架api时,文档会转换一个键并添加一个空值。
file.js
function SaveFiles(task_id) {
data = {'taskid': task_id,'file_list': file_list};
$.ajax({
url: '/tarjet/save.../',
type: 'POST',
data: JSON.stringify(data),
async:false,
success:function(data){
},
complete:function(){},
error:function (xhr, textStatus, thrownError){
}
});
}
api.py
class SaveTaskFiles(APIView):
authentication_classes = (TokenAuthentication,)
def post(self, request):
a = request.DATA
javascript输出
{"taskid":"1198792","file_list":[{"id":0,"file_name":"image2.png","upload_date":"11/16/2016","file_description":"","download_link":"a6175ab4-ac58-11e6-8e10-00dbdfd54837.png","isdeactivate":"0","sft_f":"svt"}]}
实际输入请求.DATA
{u'{"taskid":"1198792","file_list":[{"id":0,"file_name":"image2.png","upload_date":"11/16/2016","file_description":"","download_link":"a6175ab4-ac58-11e6-8e10-00dbdfd54837.png","isdeactivate":"0","sft_f":"svt"}]}': [u'']}
是Querydict类型。
我无法解释为什么我的json文件成为一个键,这个值是一个空列表,我已经使用request.body解决了它,但我知道这不是惯例。我已经尝试过转储,加载,但它没有用,虽然我可以得到密钥并使用它,但我认为这不是一个好主意。
事先非常感谢你¡
答案 0 :(得分:1)
您需要发送正确的内容类型标头,告诉DRF您正在发送JSON文档,而不是普通字符串。
$.ajax({
contentType: 'application/json',
...
});
请参阅DRF parsers docs。