Boilerplate project template for running a Flask-based application on Google App Engine (Python)
Flask is a BSD-licensed microframework for Python based on Werkzeug, Jinja 2 and good intentions.
See http://flask.pocoo.org for more info.
- Download this repository via
git clone git@github.com:kamalgill/flask-appengine-template.gitor download the tarball at http://github.com/kamalgill/flask-appengine-template/tarball/master - Copy the src/ folder to your application's root folder
- Set the application id in
src/app.yaml - Configure datastore models at
src/application/models.py - Configure application views at
src/application/views.py - Configure URL routes at
src/application/urls.py - Configure forms at
src/application/forms.py - Add a
secret_keys.pyfile atsrc/application/secret_keys.py, with the following contents:
CSRF_SECRET_KEY = '{MY_SECRET_CSRF_KEY}'
SESSION_KEY = '{MY_SECRET_SESSION_KEY}'
where the keys are a randomized string of characters.
Or, run the generate_keys.py script at src/application/generate_keys.py
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 secret_keys.py
- Customize the main HTML template at
src/application/static/templates/base.html - Customize CSS styles at
src/application/static/css/main.css - Add custom JavaScript code at
src/application/static/js/main.js - Customize favicon at
src/application/static/img/favicon.ico - Customize 404 page at
src/aplication/templates/404.html
To test the application using App Engine's development server, use dev_appserver.py
dev_appserver.py src/
Assuming the latest App Engine SDK is installed, the test environment is available at http://localhost:8080
To deploy the application to App Engine, use appcfg.py update
appcfg.py update src/
The application should be visible at http://{YOURAPPID}.appspot.com
The App Engine app's root folder is located at src/.
src/
|-- app.yaml (App Engine config file)
|-- application (application code)
|-- index.yaml (App Engine query index definitions)
|-- main.py (Main App Engine handler)
|-- packages (Flask and third-party zip packages)
|-- flask.zip (Flask core)
|-- flaskext.zip (Flask extensions, inc. Flask-WTF)
|-- jinja2.zip (template engine)
|-- simplejson.zip (JSON utility required by Jinja2)
|-- werkzeug.zip (WSGI utilities for Python-based web development)
`-- wtforms.zip (Jinja2-compatible web form utility)
The application code is located at src/application.
application/ |-- __init__.py (initializes Flask app) |-- decorators.py (decorators for URL handlers) |-- forms.py (web form models and validators) |-- models.py (App Engine datastore models) |-- settings.py (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) |-- tests.py (unit tests) |-- urls.py (URL dispatch routes) `-- views.py (Handlers for URL routes defined at urls.py)
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 com.apple.quarantine . xattr -rd com.macromates.caret .
Note: Windows users may safely ignore the xattr fix
See licenses/ folder
- Flask: 0.6.1
- Flask-WTF: 0.5.1
- Jinja2: 2.5.5
- simplejson: 2.1.1
- Werkzeug: 0.6.2
- WTForms: 0.6.2
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
Project layout improvements (zip archives/zipimport) contributed by Stochastic Technologies.