https://github.com/benoitc/dj-webmachine
Django REST layer
https://github.com/benoitc/dj-webmachine
Last synced: 12 months ago
JSON representation
Django REST layer
- Host: GitHub
- URL: https://github.com/benoitc/dj-webmachine
- Owner: benoitc
- License: mit
- Created: 2010-09-28T09:04:06.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2016-01-29T11:06:41.000Z (about 10 years ago)
- Last Synced: 2025-03-11T10:17:45.885Z (12 months ago)
- Language: Python
- Homepage: http://benoitc.github.com/dj-webmachine
- Size: 755 KB
- Stars: 59
- Watchers: 3
- Forks: 10
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
dj-webmachine
-------------
dj-webmachine is an application layer that adds HTTP semantic awareness on
top of Django and provides a simple and clean way to connect that to
your applications' behavior. dj-webmachine also offers you the
possibility to build simple API based on your model and the tools to
create automatically docs and clients from it (work in progress).
dj-webmachine is released under the MIT license. See the LICENSE
file for the complete license.
Copyright (c) 2010 Benoit Chesneau
Copyright 2010 (c) Hyperweek - http://hyperweek.net
Install
+++++++
Make sure that you have a working Python_ 2.x >=2.5 installed and Django_ >= 1.1.
With pip
~~~~~~~~
::
$ pip install dj-webmachine
From source
~~~~~~~~~~~
Get the dj-webmachine code::
$ git clone https://github.com/benoitc/dj-webmachine.git
$ cd dj-webmachine
Or using a tarbal::
$ wget http://github.com/benoitc/dj-webmachine/tarball/master -o dj-webmachine.tar.gz
$ tar xvzf dj-webmachine.tar.gz
$ cd dj-webmachine-$HASH/
and install::
$ sudo python setup.py install
dj-webmachine in 5 minutes
++++++++++++++++++++++++++
We will quickly create an Hello world accepting HTML and JSON.
::
$ django-admin startproject helloworld
$ cd helloworld
$ python manage.py startapp hello
In the hello folder create a file named ``resources.py``::
import json
from webmachine import Resource
class Hello(Resource):
def content_types_provided(self, req, resp):
"""" define the content type we render accoridng the Accept
header.
"""
return (
("", self.to_html),
("application/json", self.to_json)
)
def to_html(self, req, resp):
return "Hello world!\n"
def to_json(self, req, resp):
return "%s\n" % json.dumps({"message": "hello world!", "ok": True})
Add **dj-webmachine** and your hello app to ``INSTALLED_APPS`` in your
settings::
INSTALLED_APPS = (
...
'webmachine',
'helloworld.hello'
)
Put your the Hello resource in your ``urls.py``::
from django.conf.urls.defaults import *
from helloworld.hello.resource import Hello
urlpatterns = patterns('',
(r'^$', Hello()),
)
Launch your application::
$ python manage.py runserver
Take a look! Point a web browser at http://localhost:8000/
Or with curl::
$ curl http://127.0.0.1:8000
Hello world!
$ curl http://127.0.0.1:8000 -H "Accept: application/json"
{"message": "hello world!", "ok": true}
The first line ask the hello page as html while the second using the
same url ask for JSON.
To learn how to do more interresting things, checkout `some examples `_ or read `more documentations `_ .
.. _Python: http://python.org
.. _Django: http://djangoproject.org