I'm not as strong with GAE/Python as I am with GAE/Java, but my feeling is that your AppEngine experience will be far more productive if you use AppEngine's native Datastore APIs rather than any abstraction layer.
There's a lot of detail at the low level that you miss by using any layers of abstraction (on both Python and Java platforms). That detail is important for getting maximum performance out of your application and correctly dealing with AppEngine's unique transaction model.
The choice of web frameworks is tougher. Startup time is important right now for AppEngine (although slightly less important with some of the new features rolling down). You'll want to use the lightest-weight framework you can find.
On Python, I've had great luck with webapp + Django templates + raw Datastore APIs.
On Java, Guice + Guice servlets + raw Datastore API is really lightweight and fast. We've also developed our own Django-like templating system for Java that we hope to open-source at some point.
Anyone else with more GAE/Python experience want to chime in?
Could you share some information about how your app code is structured? The main reason I'm using Django is because I like that it gives me a directory structure. The only examples I've seen of webapp are a ton of handlers in one main.py file, which doesn't seem maintainable.
Usually I put one handler per .py, to the point, what that particular module should do and nothing else. I leave the routing stuff to the app.yaml file.
For a dir structure, I have admin, css, js, prog and view. Not hard to know what goes in every folder. Right now I have like fifty progs and fifty views, each for every specific task.
For every program there is usually one line to get the data from models and one line to render it using a template. Nothing else.
I really don't get what a framework would do to help me, I already have everything I need at my fingertips.
I've heard really good things about it. It's written for GAE and GAE only, so there aren't any abstractions that insulate you from how the datastore works. It's still worth your time to write some code against the raw datastore APIs. It takes some time for entity groups, keys and parents to sink in and working with the raw API helps you see what's going on.
I started with the raw datastore API and was able to do what I wanted after quite a bit of research and trial and error. I was then turned on to Objectify and couldn't be happier. I know what is going on underneath and the limitations but I have a much easier way to deal with them. Objectify is highly recommended, but my app doesn't have massive scale so I am not sure if it adversely affects performance much.
I did a study of the bigger templating systems available on Java earlier this year and the landscape wasn't that great: JSP, Freemarker, Velocity and a number of smaller projects. We decided that it was worth some time developing a system inspired by Django's lightweight syntax. If you send me a note (matthew@mastracci.com), I can let you know when we get our project up on github. It's rendering every page on gri.pe right now and has been stable for a few months now.
There's a lot of detail at the low level that you miss by using any layers of abstraction (on both Python and Java platforms). That detail is important for getting maximum performance out of your application and correctly dealing with AppEngine's unique transaction model.
The choice of web frameworks is tougher. Startup time is important right now for AppEngine (although slightly less important with some of the new features rolling down). You'll want to use the lightest-weight framework you can find.
On Python, I've had great luck with webapp + Django templates + raw Datastore APIs.
On Java, Guice + Guice servlets + raw Datastore API is really lightweight and fast. We've also developed our own Django-like templating system for Java that we hope to open-source at some point.
Anyone else with more GAE/Python experience want to chime in?