Hi,
I am working on implementing a REST web service example of booking a
hotel. It was supposed to be simple to start with but I am already
badly stuck:)
 I am stuck  with deserialization and serialization.  I want to create
a new resource when PUT is requested on booking. My GET method works
perfectly fine but I am stuck with PUT. My code on method PUT is:

def do_PUT(self):
       try:
           deserialized = serializers.deserialize("json",
self.request.raw_post_data)
           put_book = list(deserialized)
       except (ValueError, TypeError, IndexError):
           response = HttpResponse()
           response.status_code = 400
           return response
       for obj in put_book:
           b1 = guest( fName = "hello", phone = 21, email =
"t...@email")
       b1.save()

       json = serializers.serialize("json", b1)
       response = HttpResponse(json, mimetype="application/json")
       response.status_code = 201
       response["Location"] = "/bookings/%s" % (b1.id)
       return response


Now when I send PUT request via curl, i.e.:

curl -i -d "{'room_id': 21, 'payment_id': 21, 'guest_id': 21}" -X PUT
http://127.0.0.1:8000/bookings/

It gives me 400 error, i.e. HTTP/1.0 400 BAD REQUEST
This means it is raising and exception and not able to deserialize the
data.

I tried removing   the statement:   put_book = list(deserialized) in
try block. ie,

 try:
           deserialized = serializers.deserialize("json",
self.request.raw_post_data)
          # put_book = list(deserialized)
       except (ValueError, TypeError, IndexError):
           response = HttpResponse()
           response.status_code = 400
           return response
       for obj in deserialized:
           b1 = guest( fName = "hello", phone = 21, email =
"t...@email")
       b1.save()

       json = serializers.serialize("json", b1)
       response = HttpResponse(json, mimetype="application/json")
       response.status_code = 201
       response["Location"] = "/bookings/%s" % (b1.id)
       return response

 It then doesnt raises and exception but gives 500 error: HTTP/1.0 500
INTERNAL SERVER ERROR
.....
....
 Exception Type: ValueError at /bookings/
Exception Value: Expecting property name: line 1 column 1 (char 1)
....
...
In line 1 of my views.py, I am just importing : from django.http
import HttpResponse, HttpResponseNotAllowed, HttpResponseForbidden
And there is no problem in this line, since my rest of the views
perfectly fine if its not for this problem.

Any help and input would be appreciated. I am stuck in this for last 2
days and trying to fix it. I have googled extensively but still no
clue.

Thanks,
Irum

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to