Ich habe ein Problem sehr ähnlich zu Django's Querydict bizarre behavior: bunches POST dictionary into a single key und Unit testing Django JSON View. Keine der Fragen/Antworten in diesen Threads zeigt jedoch auf das angegebene Problem hin. Ich versuche, den Testclient von Django zu verwenden, um eine Anfrage mit einem verschachtelten JSON-Objekt zu senden (was ich gut mit JSON-Objekten mit Nicht-JSON-Werten funktioniere).Django Test Client zerschmetterte verschachtelte JSON
Versuch # 1: Hier ist mein Anfangscode:
response = c.post('/verifyNewMobileUser/',
{'phoneNumber': user.get_profile().phone_number,
'pinNumber': user.get_profile().pin,
'deviceInfo': {'deviceID': '68753A44-4D6F-1226-9C60-0050E4C00067', 'deviceType': 'I'}})
Wie Sie sehen können, hat ich ein verschachteltes JSON-Objekt in meinen Anforderungsdaten. Dies ist jedoch, was request.POST wie folgt aussieht:
<QueryDict: {u'phoneNumber': [u'+15551234567'], u'pinNumber': [u'4171'], u'deviceInfo': [u'deviceType', u'deviceID']}>
Versuch # 2: Dann habe ich versucht, auf den Content-Type-Parameter hinzufügen wie folgt:
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')
Und was ich jetzt für request.POST ist
<QueryDict: {u"{'deviceInfo': {'deviceType': 'I', 'deviceID': '68753A44-4D6F-1226-9C60-0050E4C00067'}, 'pinNumber': 5541, 'phoneNumber': u' 15551234567'}": [u'']}>
Alles, was ich in der Lage tun möchte, ist eine verschachtelte dict für meine Anforderungsdaten angeben. Gibt es einen einfachen Weg, dies zu tun?
JSON.dumps ist der beste Weg, es zu tun. Dies sollte die akzeptierte Antwort sein. – boatcoder