**********
  Django 
**********


.. image:: images/django-logo.png


.. topic:: Introduction

   The `Django <http://djangoproject.com>`_ Remoting gateway included in
   PyAMF allows you to expose functions in Django (0.96 or newer) to AMF
   clients and servers.


Example
=======

Exposing functions for AMF remoting is simple by defining a gateway
(a dispatcher) like this:

.. literalinclude:: ../examples/gateways/django/amfgateway.py
   :linenos:


The ``request`` in the first argument to the ``echo`` function corresponds
to the request object passed to every Django view function. To disable
this function add ``expose_request=False`` when instantiating the
``DjangoGateway``. As in:

.. code-block:: python
   :linenos:

   # yourproject/yourapp/amfgateway.py

   from pyamf.remoting.gateway.django import DjangoGateway

   def echo(data):
       return data

   services = {
       'myservice.echo': echo
       # could include other functions as well
   }

   echoGateway = DjangoGateway(services, expose_request=False, debug=True)


The instance ``echoGateway`` is a callable object suitable to be
used as a Django view. To insert it into your url structure add
it to your ``urlconf``:

.. code-block:: python
   :linenos:
   
   # yourproject/urls.py

   urlpatterns = patterns('',

       # AMF Remoting Gateway
       (r'^gateway/', 'yourproject.yourapp.amfgateway.echoGateway'),
   )


To test the gateway you can use a Python AMF client like this:

.. literalinclude:: ../examples/gateways/django/client.py
   :linenos:


Useful Resources
================

http://pyamf.org/wiki/ByteArrayExample
   ByteArray example using Flex and Django.

http://pyamf.org/wiki/ShellExample
   Python Shell example with Flex and Django.

http://api.pyamf.org/pyamf.remoting.gateway.django.html
   DjangoGateway in the  API documentation.

http://joelhooks.com/2008/01/05/pyamf-communication-with-django-from-flex
   Joel Hooks - Communication with Django from Flex