【发布时间】:2017-03-31 09:31:03
【问题描述】:
我的问题
我的问题是,当通过 post 将 json 文档发送到 rest 框架 api 时,文档会转换一个键并添加一个空值。
文件.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 解决了它,但我知道这不是惯例。我已经尝试过转储、加载,但它不起作用,虽然我可以得到密钥并使用它,但我认为这不是一个好主意。
先谢谢你了¡
【问题讨论】:
-
你知道你的 ajax 正在发送一个 json 字符串,对吧?
-
@RodXavier,是的,我尝试使用 JSON.stringify,但也没有这个,使用 parseJSON,使用 $.post,我得到了相同的 request.DATA。
-
尝试使用 curl 或其他工具发布相同的 json,看看这个问题是在后端还是在前端
标签: javascript python json django django-rest-framework