Python 如何在django中解析这个JSON?
我正在以以下格式发送数据Python 如何在django中解析这个JSON?,python,json,ajax,django,rest,Python,Json,Ajax,Django,Rest,我正在以以下格式发送数据 $.ajax({ url: "http://localhost:8000/loginrest/", data: JSON.stringify({'user':'admin','password':'zyz'}), processData: false, type: 'POST', error: function(xhr, error){ console.debug(xhr); console.debug(error); }
$.ajax({
url: "http://localhost:8000/loginrest/",
data: JSON.stringify({'user':'admin','password':'zyz'}),
processData: false,
type: 'POST',
error: function(xhr, error){
console.debug(xhr); console.debug(error);
},
success: function(data){
alert(data);
}
});
对应的django代码:
class LoginView(APIView):
def get(self, request, format=None):
return Response({'detail': "GET Response"})
def post(self, request, format=None):
try:
data = request.DATA
except ParseError as error:
return Response(
'Invalid JSON - {0}'.format(error.detail),
status=status.HTTP_400_BAD_REQUEST
)
print(data)
print(request.POST)
try:
print(QueryDict(request.body).get('user'))
except:
print("error")
在终点站
<QueryDict: {u'{"user":"admin","password":"zyz"}': [u'']}>
<QueryDict: {u'{"user":"admin","password":"zyz"}': [u'']}>
error
错误
我的问题是,有没有任何简单的方法可以绕过子字符串来解析它
或者,在ajax中发送JSON时,我是否做错了什么?如果您只是想获取数据:
data = json.loads(request.data)
user = data['user']
您已经发送了json数据,因此应该可以使用。如果您只想获取数据:
data = json.loads(request.data)
user = data['user']
您已经发送了json数据,因此这应该可以工作。您不必
json.stringify()
您提供给jQuery的数据,这就是为什么您会得到“双json”。见示例:
var postDataSth = JSON.stringify({asd: 123});
$.ajax({
url: 'http://url.com',
method: 'POST',
data: {
data1: postDataSth,
data2: 'KILLER_QUEEN',
foo: 'bar'
},
success: function (foo) {
if (foo) {
console.log(foo.bar);
}
},
error: function () {
console.warn('request failed!');
}
});
您不必
JSON.stringify()
向jQuery提供的数据,这就是为什么会得到“双JSON”。见示例:
var postDataSth = JSON.stringify({asd: 123});
$.ajax({
url: 'http://url.com',
method: 'POST',
data: {
data1: postDataSth,
data2: 'KILLER_QUEEN',
foo: 'bar'
},
success: function (foo) {
if (foo) {
console.log(foo.bar);
}
},
error: function () {
console.warn('request failed!');
}
});
Try data=request.data。然后QueryDict(data.get('user')Try data=request.data。然后QueryDict(data).get('user')这个格式给了我,我不知道如何解析它。@Sayok88也许你没有删除
processData:false
标志?不,我没有。工作起来就像小菜一碟,伙计。太多了。这种格式给了我很多,我不知道如何解析它。@Sayok88也许你没有删除processData:false
标志?不,我没有。工作起来就像小菜一碟,伙计。太多了。