Django Howto


django logo based on original from http://media.djangoproject.com/img/logos/django-logo-positive.png

Introduction

The Django 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:

# yourproject/yourapp/amfgateway.py

from pyamf.remoting.gateway.django import DjangoGateway

def echo(request, data):
    return data

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

echoGateway = DjangoGateway(services)

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:

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

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:

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

from pyamf.remoting.client import RemotingService

gw = RemotingService('http://127.0.0.1:8000/gateway/')
service = gw.getService('myservice')

print service.echo('Hello World!')

References

May be some problems here

  • def echo(data): # if you get echo() takes exactly 1 argument (2 given)...
  • FIX: change "(data)" to "(self,data)"

Attachments