python django django-1.6

python - Django no puede acceder a raw_post_data



django-1.6 (1)

Según la línea de tiempo de eliminación de Django 1.6 :

El atributo HttpRequest.raw_post_data fue renombrado a HttpRequest.body en 1.4. La compatibilidad con versiones anteriores se eliminará: HttpRequest.raw_post_data ya no funcionará.

La motivación se describe en el ticket correspondiente :

request.raw_post_dat a es un mal nombre. No tiene nada que ver con POST en particular, es solo el cuerpo de la solicitud HTTP. Esto confunde a los usuarios y hace que parezca que Django no entiende cómo funciona HTTP. Debemos cambiar el nombre a request.body e iniciar un proceso de desaprobación.

Use request.body :

def api(request): return HttpResponse("%s %s" % (request.method, request.body))

Espero que ayude.

Estoy experimentando algo extraño con Django, aquí está mi views.py:

def api(request): return HttpResponse("%s %s" % (request.method,request.raw_post_data))

Ahora hago un POST de HTTP con POSTMAN (pequeña aplicación para google chrome).

Configuré POSTMAN para realizar una solicitud POST con "prueba" en el campo sin procesar.

Django me devuelve 3 cosas diferentes (al azar):

En algún momento, Django devuelve ''GET'' en algún momento nada en absoluto y en algún momento:

AttributeError at / ''WSGIRequest'' object has no attribute ''raw_post_data'' Request Method: GET Request URL: https://api.mywebsiteurl.com/ Django Version: 1.6.2 Exception Type: AttributeError Exception Value: ''WSGIRequest'' object has no attribute ''raw_post_data'' Exception Location: /home/spice_dj/spice/views.py in api, line 17 Python Executable: /usr/bin/python Python Version: 2.7.3 Python Path: [''/usr/local/lib/python2.7/dist-packages/South-0.8.4-py2.7.egg'', ''/usr/lib/python2.7'', ''/usr/lib/python2.7/plat-linux2'', ''/usr/lib/python2.7/lib-tk'', ''/usr/lib/python2.7/lib-old'', ''/usr/lib/python2.7/lib-dynload'', ''/usr/local/lib/python2.7/dist-packages'', ''/usr/lib/python2.7/dist-packages'', ''/home/spice_dj''] Server time: Wed, 12 Mar 2014 22:51:11 -0400

  1. ¿Por qué Django me devuelve ''GET'' cuando hago claramente una solicitud POST?

  2. ¿Por qué me devuelve ese error?

  3. ¿Por qué no me devuelve la ''prueba'' que establecí en el campo en bruto?