2011-12-26 15 views
9

मैं Django और स्वादिष्ट पाई पर एक शानदार ऐप बना रहा हूं। मुझे पुट और पोस्ट विधियों के साथ समस्या है। जब मैं कर्ल के माध्यम से अनुरोध करता हूं तो मुझे एक त्रुटि होती है।Django स्वादिष्ट पाई: PUT और POST विधियों पर क्रमबद्धता

कर्ल अनुरोध:

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/ 

त्रुटि:

{"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"} 

Serializer मेरी संसाधन कक्षा में लागू किया जाता है:

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() 

उत्तर

18

सामग्री प्रकार हैडर कोलन गलत कर रहे हैं।

यह इस बजाय तरह दिखना चाहिए: -H "Content-Type: application/json"

+0

और कैसे आप jQuery के साथ क्या करते हो? 'ContentType: 'application/json'' काम नहीं करता है ... – Zulu

+0

अनुरोध करते समय:" json "विकल्प का उपयोग करें। अगर मुझे सही याद है तो एक .json विधि भी है – jujule

संबंधित मुद्दे