This POST might be slightly out of date from time to time. See http://github.com/sidmitra/django_nonrel_testapp.
The Django nonrel project is an attempt to make django work with non relational backends. They’ve also made a Google AppEngine backend for the same. Thus, now you can easily run native django apps on GAE.
Some caveats first, there are some features from Django that are missing(like joins! which is coming) or some that aren’t perfect yet but it’s a good start to port over any existing simple apps that you already have on Django. Something you should keep in mind is that there’s no way to mix the native django models with those that appengine provides. Some of the steps i took to get it running are specified below. In case you are too lazy :–), I have a Github repository for the same at http://github.com/sidmitra/django_nonrel_testapp.**
Getting a simple test app running with nonrel is simple. But you would need to install Mercurial first. Once you have that up and running, they project already provides a sample project to support the dev server. So you can start by cloning all required repositories first.
hg clone http://bitbucket.org/wkornewald/django-nonrel hg clone http://bitbucket.org/wkornewald/django-testapp/ hg clone http://bitbucket.org/wkornewald/djangoappengine/ hg clone http://bitbucket.org/wkornewald/djangotoolbox/ hg clone http://bitbucket.org/wkornewald/django-dbindexer/src
Setting it up
django-nonrel is the main project containing a modified django, and we need djangoappengine, djangotoolbox as further dependencies. django-testapp is the sample app created with custom configuration to make this quicker.
cd django-testapp cp -R ../django-nonrel/django django cp -R ../djangoappengine djangoappengine cp -R ../djangotoolbox/djangotoolbox djangotoolbox cp -R ../django-dbindexer/dbindexer dbindexer python manage.py runserver
And that’s it. Essentially we’ve copied all the dependencies into the project folder. So your directory structure should look something like this.
* django-testapp * django * djangotoolbox * djangoappengine * dbindexer * ...
You can also use links on linux instead of copying the directories. On windows install Link shell extension. You can drop junctions into the common-apps folder.