There are a three main variants to consider when deciding to use django and google app engine together, I'll try to lay out the pros/cons:
- Standard Django + App Engine Datastore: If you use normal django on the app engine datastore, you will only have access to Django's templating and URL processing system. You will not have access to the ORM, and you will have to use the app engine datastore ORM directly.
- Standard Django + Cloud SQL: Google supports using full django with an SQL based database instead of the datastore. If you use this option, you will have access to all of Django's features, but you will not get the automatic database scalability that comes with the app engine datastore. Also, for small projects, cloud SQL will likely be more expensive.
- Django-Nonrel + App Engine Datastore: Some enterprising developers created a fork of django called django-nonrel, which is specifically designed to run on no-sql databases like the app engine datastore and also mongo db. With this option, you get the full benefits of django as well as the full benefits of the app engine datastore. Note that you will be unable to do JOINs and some other database operations, but that is a function of the app engine datastore, not django-nonrel.
Which one you choose will of course depend. For small one-off projects that won't grow in size, I'd go with option #1 because it's probably he easiest to setup. For medium projects which will grow to a decent size, I'd suggest option #2 so you get the full benefit of django. However, if you think your project will grow quite large (database of at least several gigbytes), then option #3 is likely your best bet.
Option #3 is my option of choice. My datastore has grown to hundreds of gigabytes and I have had absolutely zero scalability problems. All that and I get to use the very nice Django ORM and all the additional plugins that come with it.
Note, in theory a fourth option is django-nonrel + cloud sql, but it makes very little practical sense.