Python Web Development: State of the Snake

From DevSummit
Jump to navigation Jump to search

Rob Miller - The Open Planning Project

Python has a rich, thriving ecosystem of web development frameworks, including Zope (2 and 3), Plone, Django, Grok, Pylons, TurboGears, Repoze, Google App Engine, and many more. It's quite a daunting landscape to approach from the outside. This talk will be an opportunity for people to learn about the differences and similarities of these various frameworks, about relative maturity, design philosophy, cultures, and other issues.

"the sleeper hit of the internet age"

easy to learn

  • readable
  • meant to be high level scripting language that appeals to c/unix geeks
  • advanced features like closures, decorators
  • not just a web space language; used in embedded systems, hardware interfaces

on the web

zope is an interesting beast. about 12 years old. has been ahead of the curve, but may be solving the problem before the problem space is well understood. age has led to increasing complexity.

first alternative to zope is zope! zope3, ground up rewrite. maintains object db. zope2 has started pulling in some zope3 libraries.

big alternatives:

  • django, probably most popular mvc framework, except "model-view-template" where view == controller, and template == view. built in ORM, usually used with sql database. will not depend on anything outside of django. fairly tight coupling - django ORM, django admin interface.

request handling - cgi lost.

zope method - elements in the request path map to objects in a object traversal tree - object dispatch

mod_python, fastcgi, extend python web servers

wsgi "whizz-gee" or "whiskey". http server receives a request, creates a request object and environ. all happens in once process. can be chained. allows you to pick pieces that you find most useful. repoze takes advantage, pulls in zope's transaction manager (, has an auth module (repoze.who) that can be dropped in the front of the chain.

  • pylons, turbogears, repoze all run as wsgi apps


nearly done. not backwards compatible. 2.6 has a future layer which will give you deprecation warnings.