Revision 81 as of 2007-09-12 11:00:39

Clear message

Web Frameworks for Python

A Web framework is a collection of packages or modules which allow developers to write Web applications (see WebApplications) or services without having to handle such low-level details as protocols, sockets or process/thread management. As a developer using a framework, you typically write code which conforms to some kind of conventions, with the benefit being that most of the code can be concerned with the logic of the application, rather than working out how to process incoming network messages, spawn processes, work out which part of the application should be invoked, and so on.

Some frameworks can be considered moderately low-level in that they provide abstractions only for certain things (eg. incoming requests, outgoing responses, state handling), whereas other frameworks provide many more abstractions and mechanisms (eg. database access, presentation of Web pages). Since a non-trivial Web application will require a number of different kinds of abstractions, often stacked upon each other, those frameworks which attempt to provide a complete solution for applications are often known as "full-stack" frameworks in that they attempt to supply components for each layer in the stack.

Note

This page does not attempt to list every single Python Web framework that exists or has ever existed, nor does it provide measures of popularity or selection criteria, although the "Popularity" and "Comparisons and Tests" sections provide some additional information along with links to other useful resources.

Be warned that many of the frameworks listed are no longer actively maintained.

High Level Full-Stack Frameworks

These are the main high-level frameworks. Most of them consist of many of the components listed further down the page.

Templating Engines

HTTP frameworks

The packages provide the base 'application server', either running as its own independent process or upon Apache. You can then bring your own applications or other components to run on top of it.

Content Management Systems

Some CMS' allow you to build application like functionality upon them. See ContentManagementSystems for more details.

Other Frameworks

These components are not categorised at the moment:

Lightweight Frameworks

Some of these frameworks provide templating but not database access or persistence mechanisms. Others provide only elementary abstractions for things like requests, responses and sessions:

Utility Modules and Components

There are some components developed outside the above frameworks which may be combined with some of these frameworks or employed directly in applications:

Popularity

Due to its established presence in Python Web programming, ["Zope"] and related solutions remain popular. Other full-stack frameworks which have enjoyed more recent popularity include ["TurboGears"] and ["Django"]. Measures of popularity include things like the number of subscribers & messages a project's e-mail lists or Internet groups may have, and such information can be readily discovered through services such as Google Groups. For example, as of 2007-09-07, ordered by recent activity:

Note that some projects' lists or groups may not be available through such services, and active contributions to a discussion group are not necessarily indicative of the level of production usage or development of a project.

Frameworks in Books

These frameworks are not apparently available for download, but are covered in various books:

Books and Articles

Comparisons and Tests

Editorial Notes

The above lists should be arranged in ascending alphabetical order - please respect this when adding new frameworks. The distinction made between "full-stack" and "lightweight" frameworks is difficult to make - please feel free to relocate frameworks to other lists, but please only do so if you actually know as a user or developer of that framework that the framework is miscategorised. When specifying release dates please use the format YYYY-MM-DD.

Notes on Editing Framework Pages

Unable to edit the page? See the FrontPage for instructions.