code: def rpc_handler(request):
      global ip
      
      if len(request.body):
          ip = request.META["REMOTE_ADDR"]
          response = HttpResponse(mimetype="application/xml")
          data = dispatcher._marshaled_dispatch(request.body)
          response.write(data)
  
          #d = Xmlrpc(request)
      else:
          response = HttpResponse()
          response.write("<h1>This is an XML-RPC Service.</h2>")
          response.write("<p>You need to invoke it using an XML-RPC Client!</p>")
          response.write("The following methods are available:<ul>")
          methods = dispatcher.system_listMethods()
  
          for method in methods:
              sig = dispatcher.system_methodSignature(method)
              # this just reads your docblock, so fill it in!
              help = dispatcher.system_methodHelp(method)
  
              response.write("<li><b>%s</b>: [%s] %s" % (method, sig, help))
          response.write("</ul>")
  
      response['Content-length'] = str(len(response.content))
      return response
docs: the actual handler:
          if you setup your urls.py properly, all calls to the xml-rpc service
          should be routed through here.
          If post data is defined, it assumes it's XML-RPC and tries to process as such
          Empty post assumes you're viewing from a browser and tells you about the service.