1. 程式人生 > >django 接受post請求json.dumps()的時候會引發TypeError: 'expected string or buffer'錯誤

django 接受post請求json.dumps()的時候會引發TypeError: 'expected string or buffer'錯誤

在客戶端中json.dumps() 一個{'a': 1,'b':2}的字典 ,post請求傳送到django中。 在django的request.POST得到的是django.http.request.QueryDict物件,而不是json串,使用json.dumps()的時候會引發TypeError: 'expected string or buffer'錯誤。

因此,可以使用myDict = dict(queryDict.iterlists())轉換為字典形式,不用json.dumps()進行轉換

程式碼例子如下:

views.py

from django.shortcuts import render_to_response

def recv_data(request):
    recvdata = {}
    if request.method == "POST" and request.POST:
        recvdata = request.POST
        print recvdata
        print type(recvdata)
        print '-----------------------------'
        data = dict(recvdata.iterlists())
        data = eval(data.keys()[0].encode())
        print data
        print type(data)

    return render_to_response('recvdata.html',locals())

print看到的程式碼如下:

<QueryDict: {u'{"a": 1, "b": 2}': [u'']}>
<class 'django.http.request.QueryDict'>
-----------------------------
{'a': 1, 'b': 2}
<type 'dict'>