如何在django中解析这个JSON?

时间:2017-01-22 13:07:26

标签: 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);
},
    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时做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您只想获取数据:

/i

你已经发送了json数据,所以这应该可行。

答案 1 :(得分:0)

您没有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!');
    }
});