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
标志?不,我没有。工作起来就像小菜一碟,伙计。太多了。