2011-10-25 16 views
5

El título casi lo dice todo: uso raw_post_data en un par de vistas, y por lo tanto necesito que el cliente de prueba otorgue acceso apropiado a él.Acceso a raw_post_data en el cliente de prueba django

He copiado la cadena raw_post_data, de una solicitud simulada, la pasé a json.loads(), y luego usé el dict resultante como datos POST para el cliente de prueba. Luego, configuré el tipo de contenido como "aplicación/json", esto hace que aparezca raw_post_data, pero no es lo mismo raw_post_data que la solicitud simulada.

+0

¿Podría publicar las (diferencias entre) los datos que aparecen y la solicitud que espera ver? – jro

Respuesta

4

Cuando cambia el tipo de contenido en el cliente de prueba, el parámetro de datos ya no se analiza como un diccionario sino que se envía directamente. Intente copiar su cadena JSON directamente como el parámetro de datos a su solicitud de publicación, debe recibirla en raw_post_data en su aplicación.

2

sólo tiene que seguir los pasos indicados a continuación:
        1. establecer el atributo de datos a su cadena de .
        2. continuación, establezca la content_type atributo a application/octet-stream.

payload = {'k1':'v1'} 
    data = json.dumps(payload) 
    response = self.client.post(url, data=data, content_type='application/octet-stream', **self.auth_headers) 
+0

Esto funcionó como el encanto. Referencia: https://docs.djangoproject.com/en/1.9/_modules/django/test/client/ – Blas

Cuestiones relacionadas