Getting up and running with Django nonrel

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.**

Downloading stuff

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.

Source:

http://www.allbuttonspressed.com/blog/django/2010/01/Native-Django-on-App-Engine http://www.allbuttonspressed.com/projects/djangoappengine#docu