Hi all,

I want to use DJango to implement an XML based RESTful API and a
website together using DJango. I am wondering if anyone here is aware
of any tutorials on ways of achieving this in DJango without
duplicating too much code?


Basically what I want to achieve is to use the same core logic for
both the website and the API and just have different presentation
layers for the two systems. I have not seen any tutorials or the like
on doing this sort of thing and was wondering if people here have
suggestions on best approaches or tutorials that might show good ways
to structure this.

The idea is that all interaction using the API uses XML. The POST data
sent to the server and responses from the server are all using an XML
schema that we have designed for our application. All interaction with
the website is the same but uses normal web forms etc for the
interface of the presentation layer.

Example API:
* GET   : https://mywebsite/api/rooms/ : List available rooms, returns
XML with a list of Room ID's
* POST : https://mywebsite/api/room/  : Create a new room, raw POST
data is XML with the parameters required to create a room, on success
returns a Room ID
* GET   : https://mywebsite/api/room/<room-id>/ : Retrieves details
about an existing room
* POST : https://mywebsite/api/room/<room-id>/ : Modifies details for
an existing room
* DELETE : https://mywebsite/api/room/<room-id>/ : Delete a room

Now, on the website side of things I want to do exactly the same but
as part of a a nice HTML site (with menus for navigation, nice graphs
to display relevant data etc).

Example Web:
* GET   : https://mywebsite/web/rooms/ : Displays a page with a list
of links to available Rooms.
* GET   : https://mywebsite/web/room/   : Displays a page with a form
requesting input of all necessary data to create a new room.
* POST : https://mywebsite/web/room/   : Create a new room. POST data
comes from form displayed previously (on error redisplays form). On
success redirects the user to the details page for that room.
* GET   : https://mywebsite/web/room/<room-id>/ : Displays details
about an existing room and provides it in a form that can be used to
change the data with a POST
* POST : https://mywebsite/web/room/<room-id>/ : Modifies details for
an existing room
* DELETE : https://mywebsite/web/room/<room-id>/ : Delete a room


Thanks,
Brendon.

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