Debugging Jinja2 templates in Google App Engine

Jinja2 needs some python modules that are forbidden in the python sandbox provided by Google App Engine. Fortunately its fairly easy to white list them in the SDK local development server — currently there is no workaround for production.

PRODUCTION = not os.environ.get('SERVER_SOFTWARE', '').startswith('Dev')
    # enable jinja2 debugging info in GAE SDK
    from import sandbox
    sandbox._WHITE_LIST_C_MODULES += ['_ctypes', 'gestalt']

The original workaround is not working on the new development server aka devappserver2.


GAE ancestor query without ancestor in the results

Ancestor queries in GAE can return the ancestor in the results:

  • when ancestor and query kind are the same, eg.:
  • on kindless query, eg.:
  • To filter out ancestor instance from being fetched use filter on __key__:

    SomeModel.query(ancestor=some_key).filter(SomeModel.key > some_key)