2011-12-26 12 views
9

Estoy construyendo una aplicación RESTful en Django y Tasty Pie. Tengo un problema con los métodos PUT y POST. Cuando hago una solicitud a través de Curl, tengo un error.Django Tasty Pie: serialización en los métodos PUT y POST

solicitudes Curl:

curl -i -H "Content-Type :application/json" -X POST -d '{"site_id":2,"post":2}' --user log:pass http://domain.com/core/api/v1/bookmarklet_post/ 

curl -i -H "Content-Type :application/json" -X PUT -d '{"site_id":2,"post":2}' --user log:pass http://domain.com/core/api/v1/bookmarklet_post/ 

el error:

{"error_message": "The format indicated 'application/x-www-form-urlencoded' had no 
available deserialization method. Please check your ``formats`` and ``content_types`` on 
your Serializer.", "traceback": "Traceback (most recent call last):\n\n File  
\"/home/ilya/envs/rebelmouse/lib/python2.7/site-packages/tastypie/resources.py\", line 
178, in wrapper\n response = callback(request, *args, **kwargs)\n\n File 
\"/home/ilya/envs/rebelmouse/lib/python2.7/site-packages/tastypie/resources.py\", line 
379, in dispatch_list\n return self.dispatch('list', request, **kwargs)\n\n File 
\"/home/ilya/envs/rebelmouse/lib/python2.7/site-packages/tastypie/resources.py\", line 
409, in dispatch\n response = method(request, **kwargs)\n\n File 
\"/home/ilya/envs/rebelmouse/lib/python2.7/site-packages/tastypie/resources.py\", line 
1020, in put_list\n deserialized = self.deserialize(request, request.raw_post_data, 
format=request.META.get('CONTENT_TYPE', 'application/json'))\n\n File 
\"/home/ilya/envs/rebelmouse/lib/python2.7/site-packages/tastypie/resources.py\", line 
328, in deserialize\n deserialized = self._meta.serializer.deserialize(data,  
format=request.META.get('CONTENT_TYPE', 'application/json'))\n\n File 
\"/home/ilya/envs/rebelmouse/lib/python2.7/site-packages/tastypie/serializers.py\", line 
159, in deserialize\n raise UnsupportedFormat(\"The format indicated '%s' had no 
available deserialization method. Please check your ``formats`` and ``content_types`` on 
your Serializer.\" % format)\n\nUnsupportedFormat: The format indicated 'application/x- 
www- form-urlencoded' had no available deserialization method. Please check your 
``formats`` and ``content_types`` on your Serializer.\n"} 

Serializador se implementan en mi clase de recurso:

class BookmarkletPostResource(Resource): 
    site_id = fields.CharField(attribute='site_id') 
    post = fields.CharField(attribute='post')  

    class Meta: 
     resource_name = 'bookmarklet_post' 
     include_resource_uri = False 
     limit = 10 
     default_format = "application/json" 
     object_class = ProxyStore 
     authorization = Authorization() 
     serializer = Serializer() 

Respuesta

18

el tipo de contenido de encabezado de dos puntos están fuera de lugar.

Se debe tener este aspecto en su lugar: -H "Content-Type: application/json"

+0

Y ¿cómo se hace con jQuery? 'ContentType: 'application/json'' no funciona ... – Zulu

+0

use el tipo: opción" json "al realizar la solicitud. también hay un método .json si recuerdo correctamente – jujule

Cuestiones relacionadas