Tutorial for: Pyjamas
Requirements:
This short tutorial explains how to call Djaxice functions directly from Pyjamas and use the returned context.
I enjoy building web application using both Pyjamas and Django and recently found out how easy it is to build AJAX calls in Django using Dajaxice. I then thought to myself, would it be nice to use the Dajaxice facility within my Pyjamas app? Then I went off and created this reusable Pyjamas class:
# -*- coding: utf-8 -*-
from pyjamas.HTTPRequest import HTTPRequest
from pyjamas.Cookies import getCookie
from pyjamas.JSONParser import JSONParser
parser = JSONParser()
dumps = getattr(parser, 'encode')
loads = getattr(parser, 'decodeAsObject')
class JSONRequest(HTTPRequest):
def __init__(self, callback, error_func):
self.callback = callback
self.onError = error_func
def onCompletion(self, json_str):
data = loads(json_str)
self.callback.onCompletion(data)
def call(self, url, postData={}):
remote_url = '/dajaxice/%s/' % url
send_data = 'argv=%s' % dumps(postData)
headers={'X-Requested-With':'XMLHttpRequest',
'X-CSRFToken':getCookie('csrftoken')}
self.asyncPost(remote_url, send_data, self, headers=headers)
Using this code in your Pyjamas app is very easy, here is how simple it is to integrate:
from Dajaxice import JSONRequest
class MyApp(object):
def __init__(self):
ajax = JSONRequest(self, self.onError)
ajax.call('timesheet.get_times',{'employee_id':'763455'})
def onCompletion(self, data):
# Play with the data context returned from Django.
def onError(self):
Window.alert('An error occured.')
Read the API guide on HTTPRequest for information on how to configure the onError correctly.
There you have it, now you can easily fetch a native Django context using Djaxice directly in Pyjamas.
