Experimento un comportamiento realmente extraño cuando uso el cliente de prueba en django.Comportamiento extraño de Django Querydict: agrupa el diccionario POST en una sola clave
Estoy usando un POST
para enviar datos a mi aplicación django. Normalmente hago esto desde una aplicación de iPhone y/o un formulario html de prueba. En el lado del servidor, así es como lo manejo:
def handle_query(request):
print request
q = con.QueryLog()
q.ID = request.POST.get('ID', '')
q.device = request.POST.get('device-model', '')
....
Esa declaración de impresión se parece a lo que cabría esperar, es decir, cada parámetro en la petición de entrada se convierte en una clave en el diccionario:
la POST : QueryDict: {u'app-versión ': [u'3.0'], u'server-versión ': [u'v3d0'],
Sin embargo, comencé a escribir algunas pruebas utilizando el cliente de prueba de Django, y no importa lo que intento, el diccionario de parámetros de POST que envío en la solicitud de publicación se agrupan en una sola clave en el QueryDict
. Permítanme ilustrar con algo de código:
clase SearchTest (TestCase): definición de configuración (auto): pase
def test_search(self):
request = HttpRequest()
data = '{"amzn_locale": "com"}'
# request._raw_post_data = data
resp = self.client.post(
'/is/',
data=data,
content_type='application/x-www-form-urlencoded',
# content_type='application/json',
)
La misma declaración de impresión en el lado del servidor muestra la agrupación inexplicable del diccionario en una cadena:
POST: QueryDict: {u'{"amzn_locale":"com"}': [u'']}>,
Si fijo de datos a un diccionario real, lo mismo
data = {"amzn_locale": "com"}
Establecer el request._raw_post_data no cambia nada. Tampoco cambia
content_type='application/json'
Cualquier ayuda sería muy apreciada. De esta cuestión stackoverflow parece que no soy el primero en encontrarse con este iphone Json POST request to Django server creates QueryDict within QueryDict
Gabi Gracias por la edición – Andres