【问题标题】:How to parse this JSON in django?如何在 django 中解析这个 JSON?
【发布时间】:2017-06-07 01:43:23
【问题描述】:

我正在发送以下格式的数据

$.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 = request.data。然后 QueryDict(data).get('user')

标签: python json ajax django rest


【解决方案1】:

您不必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!');
    }
});

【讨论】:

  • 这种格式给了我 我不知道要解析它。
  • @Sayok88 也许您没有删除processData: false 标志?
  • 不,我没有。像一块蛋糕伴侣一样工作。非常感谢。
【解决方案2】:

如果你只是想获取数据:

data = json.loads(request.data)
user = data['user']

您已经发送了 json 数据,所以这应该可以工作。

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2014-04-16
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多