如何在 django 中解析这个 JSON?

Posted

技术标签:

【中文标题】如何在 django 中解析这个 JSON?【英文标题】:How to parse this JSON in django? 【发布时间】: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') 【参考方案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 数据,所以这应该可以工作。

【讨论】:

以上是关于如何在 django 中解析这个 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何解析和渲染 json 以在 Django 模板中使用

如何解析json数据python django?

如何在Django中接收JSON格式的数据

如何在 django 中返回这个 JSON 而不会被转义?

如何解析json数据并将其加载到django模板

无法在 Django 1.8 中解析静态 JSON 文件