benoitc/dj-webmachine

Django REST layer

Python

59

103 commits

updated Jan 29, 2016

See the code

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 <benoitc@e-engura.org>
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 "<html><body>Hello world!</body></html>\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
    <html><body>Hello world!</body></html>

    $ 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 <http://benoitc.github.com/dj-webmachine/recipes.html>`_ or read `more documentations <http://benoitc.github.com/dj-webmachine/docs.html>`_ .

.. _Python: http://python.org
.. _Django: http://djangoproject.org

Not written in Markdown, so it's shown here as plain text โ€” view it formatted on GitHub.

Contributors

benoitc

99 commits

bavovna

3 commits

brutasse

1 commits

benoitc/dj-webmachine

Django REST layer

Python

59

103 commits

updated Jan 29, 2016

See the code

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 <benoitc@e-engura.org>
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 "<html><body>Hello world!</body></html>\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
    <html><body>Hello world!</body></html>

    $ 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 <http://benoitc.github.com/dj-webmachine/recipes.html>`_ or read `more documentations <http://benoitc.github.com/dj-webmachine/docs.html>`_ .

.. _Python: http://python.org
.. _Django: http://djangoproject.org

Not written in Markdown, so it's shown here as plain text โ€” view it formatted on GitHub.

Contributors

benoitc

99 commits

bavovna

3 commits

brutasse

1 commits

Languages

Python

84.0%

JavaScript

13.2%

HTML

1.7%

CSS

1.1%