Created: 2008-05-14 17:22
Updated: 2016-05-11 21:31
License: mit



The lazy man's web framework.


You have an awesome offline program. Webify and deploy it in under 5 minutes.

Example: a complete Webify application

import webify

def app(req, p, name):
    times = req.params.get(u'times', 1)
    for i in xrange(int(times)):
        p(u'Hello, %s!<br />' % (name or u'world'))

if __name__ == '__main__':

Programming and Design Philosophy

  • The Zen of Python
  • Don't repeat yourself
  • Simplicity over features
  • Clarity over cleverness
  • Explicit is better than implicit
  • No magic
  • Make only Order of Magnitude improvements
  • Defaults over options
  • Innovation over patterns
  • Exactly one obvious way to do anything
  • Build bottom-up as well as top-down
  • Code less
  • Don't repeat yourself
  • Automate everything
  • No pagination


Webify already includes

  • Controllers
  • Templates and helpers
  • Beautiful Urls
  • Forms
  • Middleware
  • A production server thread
  • Smallest python webapps in production
  • Very extensible and easy to understand
  • Error handling framework
  • Webapp testing framework
  • Standard template filters
  • Natural code layout using python packages
  • Email framework
  • A debugging server thread
  • Web args
  • Pluggable sub-webapps
  • Full Unicode compliance and safety
  • Layout system for templates
  • RSS Feeds
  • Cache system

Webify still needs, in order,

  • Redo dispatchers
  • Redo redirecters and page objects / templates
  • Sessions and authentication*
  • Models and backend storage*
  • Ecosystem of pluggable sub-webapps*
  • Documentation, auto-generated from codebase, with auto-tests
  • Testing framework data fixtures
  • Auto-admin (databrowse?)*
  • CSRF protection
  • XSS Protection
  • Sitemaps
  • Internationalization*
  • Synchronous and asynchronous signals and dispatchers*

*requires a hard design decision

Webify will never have

  • { Braces }
  • Pagination
  • Clunky design
  • Repetition
  • Repetition


Webify borrows heavily from existing Python web architectures and thanks them profusely for their high quality.

Thank you WebOb and Paste for much of this code.
Also, thank you Ian Bicking, Django developers, and Guido van Rossum for great design ideas and a high standard of excellence.


I strive for a bug-free master branch.

As to the stability of the API and backwards-compatibility, I guarantee nothing. In fact, I guarantee that I will change the API many times, breaking unmodified applications, sometimes purposefully to keep you mindful.

I will keep this promise both through the beta and after 1.0.

Legacy code kills the pace of development, snowballs cruft, and holds back the possibility of game-changing improvements.

On the other hand, branches of point versions may be maintained with bug fixes for those who want to stay secure, but do not need new features.


MIT license

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more