Project Template for running Flask on Google App Engine
Python JavaScript
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 166 commits behind kamalgill:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Flask on App Engine Project Template

Boilerplate project template for running a Flask-based application on Google App Engine (Python)

About Flask

Flask is a BSD-licensed microframework for Python based on Werkzeug, Jinja 2 and good intentions.

See for more info.


  1. Download this repository via git clone or download the tarball at
  2. Copy the src/ folder to your application's root folder
  3. Set the application id in src/app.yaml
  4. Configure datastore models at src/application/
  5. Configure application views at src/application/
  6. Configure URL routes at src/application/
  7. Configure forms at src/application/
  8. Add a file at src/application/, with the following contents:

where the keys are a randomized string of characters.

Or, run the script at src/application/ to generate the keys file.

Note: Copy the .gitignore file from the tarball folder's root to your git repository root to keep the secret_keys module out of version control.

Or, add the following to your .(git|hg|bzr)ignore file

	# Keep secret keys out of version control

Front-end Customization

  1. Customize the main HTML template at src/application/static/templates/base.html
  2. Customize CSS styles at src/application/static/css/main.css
  3. Add custom JavaScript code at src/application/static/js/main.js
  4. Customize favicon at src/application/static/img/favicon.ico
  5. Customize 404 page at src/aplication/templates/404.html

Testing the Application

To test the application using App Engine's development server, use src/

Assuming the latest App Engine SDK is installed, the test environment is available at http://localhost:8080

Deploying the Application

To deploy the application to App Engine, use update update src/

The application should be visible at http://{YOURAPPID}

Folder structure

The App Engine app's root folder is located at src/.

	|-- application (application code)
	|-- flask (Flask core)
	|-- flaskext (Flask extensions, inc. Flask-WTF)
	|-- jinja2 (template engine)
	|-- simplejson (required by Jinja2)
	|-- werkzeug (WSGI utilities for Python-based web development)
	`-- wtforms (Jinja2-compatible web form utility)

The application code is located at src/application.

	|-- (initializes Flask app)
	|-- (decorators for URL handlers)
	|-- (web form models and validators)
	|-- (App Engine datastore models)
	|-- (settings for Flask app)
	|-- static
	|	|-- css
	|	|	`-- main.css (custom styles)
	|	|-- img
	|	|	|-- favicon.ico (replace with custom favicon)
	|	|	`-- favicon.png
	|	`-- js
	|		|-- main.js (custom javascript)
	|		`-- modernizr-1.6.min.js (HTML5 enabling and detection)
	|-- templates
	|	|-- 404.html (not found page)
	|	|-- base.html (master template)
	|	|-- list_examples.html (example list-based template)
	|	`-- new_example.html (example form-based template)
	|-- (unit tests)
	|-- (URL dispatch routes)
	`-- (Handlers for URL routes defined at

Removing Extended Attributes (@ flag)

A few of the files in the source tree were uploaded (with apologies) to GitHub with extended attributes (notice the '@' symbol when running ls -al).

To remove the extended attributes, use xattr -rd at the root of the src/ folder.

	xattr -rd .
	xattr -rd com.macromates.caret .

Note: Windows users may safely ignore the xattr fix


See licenses/ folder

Package Versions

  • Flask: 0.6
  • Flask-WTF: 0.3.3
  • Jinja2: 2.5.5
  • simplejson: 2.1.1
  • Werkzeug: 0.6.2
  • WTForms: 0.6.1


Project template layout was heavily inspired by Francisco Souza's gaeseries Flask project

HTML5-based main template (templates/base.html) extracted from HTML5 Boilerplate

CSS reset, fonts, grids, and base styles provided by YUI 3