Tôi gặp sự cố rất giống với Django's Querydict bizarre behavior: bunches POST dictionary into a single key và Unit testing Django JSON View. Tuy nhiên, không có câu hỏi/câu trả lời nào trong các chủ đề này thực sự chỉ ra vấn đề cụ thể mà tôi đang gặp phải. Tôi đang cố gắng sử dụng khách hàng thử nghiệm của Django để gửi một yêu cầu với một đối tượng JSON lồng nhau (những gì tôi đã làm việc tốt với các đối tượng JSON với các giá trị không phải là JSON).Khách hàng thử nghiệm Django squishes lồng nhau JSON
Cố gắng # 1: Đây là mã ban đầu của tôi:
response = c.post('/verifyNewMobileUser/',
{'phoneNumber': user.get_profile().phone_number,
'pinNumber': user.get_profile().pin,
'deviceInfo': {'deviceID': '68753A44-4D6F-1226-9C60-0050E4C00067', 'deviceType': 'I'}})
Như bạn thấy, tôi có một đối tượng JSON lồng bên trong dữ liệu yêu cầu của tôi. Tuy nhiên, đây là những gì request.POST trông giống như:
<QueryDict: {u'phoneNumber': [u'+15551234567'], u'pinNumber': [u'4171'], u'deviceInfo': [u'deviceType', u'deviceID']}>
Cố gắng # 2: Sau đó, tôi cố gắng, thêm vào các tham số content-type như sau:
response = c.post('/verifyNewMobileUser/',
{'phoneNumber': user.get_profile().phone_number,
'pinNumber': user.get_profile().pin,
'deviceInfo': {'deviceID': '68753A44-4D6F-1226-9C60-0050E4C00067', 'deviceType': 'I'}},
'application/json')
Và những gì tôi có được bây giờ cho request.POST là
<QueryDict: {u"{'deviceInfo': {'deviceType': 'I', 'deviceID': '68753A44-4D6F-1226-9C60-0050E4C00067'}, 'pinNumber': 5541, 'phoneNumber': u' 15551234567'}": [u'']}>
Tất cả những gì tôi muốn làm là có thể chỉ định một mệnh đề lồng nhau cho dữ liệu yêu cầu của tôi. Có cách nào làm dễ hơn không?
JSON.dumps là cách tốt nhất để làm điều đó. Đây sẽ là câu trả lời được chấp nhận. – boatcoder