WebFrameworks

Legacy Wiki Page

This page was migrated from the old MoinMoin-based wiki. Information may be outdated or no longer applicable. For current documentation, see python.org.

1. 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.

The majority of Web frameworks are exclusively server-side technology, although, with the increased prevalence of AJAX, some Web frameworks are beginning to include AJAX code that helps developers with the particularly tricky task of programming (client-side) the user’s browser. At the extreme end of the client-side Web Frameworks is technology that can use the web browser as a full-blown application execution environment (a la gmail for example): see Web Browser Programming for details.

As a developer using a framework, you typically write code which conforms to some kind of conventions that lets you “plug in” to the framework, delegating responsibility for the communications, infrastructure and low-level stuff to the framework while concentrating on the logic of the application in your own code. This “plugging in” aspect of Web development is often seen as being in opposition to the classical distinction between programs and libraries, and the notion of a “mainloop” dispatching events to application code is very similar to that found in GUI programming.

Generally, frameworks provide support for a number of activities such as interpreting requests (getting form parameters, handling cookies and sessions), producing responses (presenting data as HTML or in other formats), storing data persistently, and so on. 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.

Many frameworks now provide an element of customization in their support for the above activities and abstractions, utilizing components in that they provide abstractions only for certain specific things. As a result, it can be possible for you to build your own full-stack framework almost entirely from existing components.

1.2. Other Full-Stack Frameworks

These frameworks also provide most, if not all of the technology stack. However, they are regarded as not being as popular as the frameworks listed above.

  • Kiss.py (1.0.0 Released 2014-06-23) MVC web framework in Python with Gevent, Jinja2, Werkzeug.

  • Lino (25.4.5 Released 2025-04-30), a framework for creating customized enterprise-level Rich Internet Applications using Sencha ExtJS and Django.

  • Nagare (0.6b2 Released 2021-07-21) - a new approach for the rapid development of web applications, thanks to advanced features like truely autonomous and reusable components, continuation, programmatic HTML/XML, automatic AJAX rendering and database ORM.

  • Pylatte (1.0 Released 2013-02-03) - Pylatte is Python3-based web framework. Pylatte is used pyl code to make web site. pyl code is compose to python and HTML. so pyl code seem like php code. easy to learn, easy to run.

  • Tipfy (1.0b3 Released 2011-07-18) tipfy is a small but powerful framework made specifically for Google App Engine.

  • Tornado (6.4.2 Released 2024-11-22) is an open source version of the scalable, non-blocking web server and and tools that power FriendFeed (acquired by Facebook with this project released as open source).

  • watson-framework (3.5.4 Released 2019-10-07, initial release 2012-11-26) A component based WSGI web framework giving you the tools needed to build your web apps quickly and easily:

    • Requires Python 3.3+.

    • MVC based architecture

    • Dependency injection

    • Event driven

  • webapp2 (3.0.0b1 Released 2016-09-13) - a lightweight framework compatible with Google App Engine’s webapp: it extends webapp to add better URI routing and exception handling, a full featured response object and a more flexible dispatching mechanism. Also offers sessions, localization, internationalization, domain and subdomain routing and secure cookies. Can be used outside of App Engine, independently of the App Engine SDK.

  • WebCore (2.0.4 Released 2020-05-12) A full-stack, light-weight and efficient web development framework. Web applications as simple as a single file, or as structured as you want. Utilizes popular WSGI components, ORMs, etc. without locking you in, and offers a unique init.d-like middleware configuration.

  • web.py (0.62 Released 2020-11-09) Think about the ideal way to write a Web app. Write the code to make it happen.

  • Webware for Python 3 (3.1.0 Released 2025-09-07) is a time-tested suite of Python packages and tools for developing object-oriented, web-based applications.

  • Werkzeug (3.1.3 Released 2024-11-08) is Unicode-aware, includes a powerful debugger, full featured request and response objects, HTTP utilities to handle entity tags, cache control headers, HTTP dates, cookie handling, file uploads, a powerful URL routing system and a bunch of community contributed addon modules.

1.4. Other Non Full-Stack Frameworks

  • Albatross (1.42 Released 2011-04-27) a small and flexible Python toolkit for developing highly stateful Web applications; deploys to CGI, FastCGI, and ModPython servers.

  • Aquarium (2.3 Released 2007-01-01) offers convenient libraries, tight integration with Cheetah, adaptors for various Web environments; deploys to CGI, FastCGI, and ModPython servers.

  • AppWsgi - illustration of building your own ajax framework running on a mod_wsgi apache server

  • Backendpy (0.2.8a1 Released 2023-12-26) - A Python web framework for building the backend of your project with asynchronous programming (ASGI application) and features such as middlewares, data handlers, hooks, etc.

  • BlueBream (1.0 Released 2011-01-18) is a web framework best suited for medium to large projects split into many interchangeable and reusable components. Formerly known as Zope 3, and based on Zope Toolkit (ZTK).

  • Bobo (2.4.0 Released 2017-05-17) is a light-weight framework for creating WSGI web applications. Its goal is to be easy to use and remember. It addresses 2 problems: 1) mapping URLs to objects and 2) calling objects to generate HTTP responses. Bobo doesn’t have a templating language, a database integration layer, or a number of other features that are better provided by WSGI middle-ware or application-specific libraries. Bobo builds on other frameworks, most notably WSGI and WebOb.

  • circuits (3.2.3 Released 2024-04-04) is a component based, event-driven light weight and high performance HTTP/WSGI framework. circuits has some similar features to CherryPy (see above), such as CherryPy’s URL mapping. circuits applications are stand-alone applications with a high performance, multi-process web server with great concurrent scalability with full support for WSGI and deployment with other web servers.

  • Clastic (24.0.0 released 2024-04-24) is a functional web microframework that streamlines explicit development practices while eliminating global state. It’s built on top of Werkzeug, so it’s immediately familiar to Flask users, and WSGI, so it deploys the same as other Python web applications. It has a powerful and intuitive routing system, built-in development server, and metadata application. See this PayPal Engineering post for examples and screenshots.

  • Divmod Nevow (0.14.5 Released 2019-12-15) a comprehensive library including a resource model encouraging the separation of application and presentation logic, a markup system with support for designer-friendly XHTML templates and pure-Python templates, and a robust AJAX-like API (Divmod Athena) which supports the creation of highly dynamic Web pages in a structured manner.

  • Growler (0.8.0 Released 2016-09-07) - A micro web-framework built atop asyncio coroutines and chained middleware, that provides an easy way to implement complex applications.

  • Gunstar (0.2.2 released 2013-09-06) is a microframework based on WebOb and Jinja2.

  • Klein (23.5.0 released 2023-05-03) is a micro-framework for developing production-ready web services with Python. It is ‘micro’ in that it has an incredibly small API similar to Bottle and Flask. It is not ‘micro’ in that it depends on things outside the standard library. This is primarily because it is built on widely used and well tested components like Werkzeug and Twisted.

  • Lona (1.16.2 released 2024-03-25) is a web application framework, designed to write responsive web apps in full Python. Lona handles the server- and client side, and provides a simple, pythonic API to write self contained views, without any Javascript.

  • MorePath (0.19 released 2020-01-30) Morepath is a Python web microframework, with super powers. It uses routing, but the routing is to models. Morepath is model-driven and flexible, which makes it expressive.

  • Pycnic (0.0.9 Released 2016-05-20) - A web framework that is object oriented and optimized for JSON APIs. Pycnic only includes the tools needed for web API creation allowing for a lighter footprint than most other frameworks. Supports Python 2.7 and 3.

  • Python Paste (1.7.5.1 Released 2010-09-20) brings consistency to Python Web development and Web application installation, providing tools for both developers and system administrators. Also, Pylons (see above) is built on top of Paste.

  • PyWebLib (1.3.13 Released 2017-01-18) - provides support for forms and sessions; used to implement web2ldap

  • Quixote (3.7 Released 2025-01-24) Allows developers to develop dynamic Web sites while using as much of their existing Python knowledge as possible

  • Sanic (25.3 Released 2025-04-01) - A Flask-like Python 3.5+ web server that’s written to go fast.

  • Spinne (1.0.1 Released 2014-05-17) - A simple, easy and fast micro web framework for python 3.x.

  • weblayer (0.4.3 Released 2011-02-03) - weblayer is a lightweight, componentised Python package for writing web applications.

  • WSGIServlets (1.0.1 Released 2011-11-09) - lightweight, object-oriented framework that doesn’t get in your way. Intuitive class hierarchy makes coding WSGI applications, middleware or full-blown CMS and frameworks a simple task by providing developers a rich set of tools out-of-the-box. A link to a live tutorial (written with WSGIServlets) is available on the project’s homepage. The tutorial is also included in the distribution along with a complete API reference manual.

1.5. Discontinued/Inactive Frameworks

The following frameworks are either discontinued, in that their developers may have stated that they no longer maintain the code, or appear to be inactively developed or maintained, in that the Web site for the project has remained unchanged for an extended period of time.

  • 4Suite (the server product seems to receive relatively infrequent updates and the site is often down)

  • Bocadillo (0.18.3 Released 2019-10-22) is the Python web framework filled with asynchronous salsa. This async-first framework ships with carefully chosen included batteries which help you build performant web apps and services with minimal setup. Bocadillo has core support for both HTTP and WebSocket and is built on top of Starlette and Uvicorn. Python 3.6+ only. (Note: Bocadillo is now UNMAINTAINED. Users are recommended to migrate to a supported alternative, such as Starlette or FastAPI.)

  • Crusader is a powerful application server for Python based upon a scalable, extensible and easy-to-use general purpose server framework.

  • Cymbeline (1.3.1 Released 2005-12-09) an application server framework, including functionality such as DB and arbitrary object pooling, Web servers, persistent object repository, and a text console. As of 2013-08-13, this is a dead link.

  • Enamel - an abstraction layer over Twisted, Nevow, Formal and SQLAlchemy to converge their concepts under a single framework (Link no longer works)

  • GAE framework - (1.0 PRE, Released 2011-05-84) is a Python web framework that’s designed for high-load web sites build on Google App Engine; Note: The project website appears to have been closed down: http://www.gaeframework.com

  • Giotto (0.10.5 Released 2013-01-18) - a strict MVC framework that strictly separated Model, View and Controller elements so that Designers, Web Developers, and Sysadmins can work independently of each other. Giotto includes controller modules that allow applications to be built on top of the web, irc or the command line.

  • Gizmo(QP) (0.7 Released 2007-04-17) extends QP (see below) adding functionality to help with building rich and exacting web interfaces. Includes a Form module that supports (redundant) automatically generated client-side field validation as well as additional json callbacks.

  • Glashammer (0.2.1 Released 2009-03-31) is a full stack Python web framework with an emphasis on simplicity, flexibility, and extensibility. It is built atop excellent components and reinvents zero wheels. WSGI, routing, templating, forms, data, plugins, config, events, SQLAlchemy, Storm, Couchdb, OpenID, AppEngine, Jquery, etc.

  • Karrigell (3.1.1 Released 2010-09-02) is a flexible Python web framework, with a clear and intuitive syntax. It is independent from any database, ORM or templating engine, and lets the programmer choose between a variety of coding styles. A version for Python3.2+ (4.3.10 Released 2013-05-26) [is] was available at http://code.google.com/p/karrigell/

  • maki (developers no longer use the product)

  • Porcupine (0.6 Released 2009-07-18) provides everything you need for building modern data-centric Web 2.0 applications, including the QuiX Javascript toolkit and the Porcupine Object Query Language (POQL). Requires Python 2.5 or later - not including 3.0 yet.

  • Pyroxide is built atop Apache’s mod_python. It uses the MVC (model-view-controller) pattern and other classic object oriented patterns throughout. It abstracts the mod_python layer presenting a very sensible object oriented framework so that the developer deals with HTTP Requests, HTTP Responses, Page Controllers, Views and domain model objects. It integrates very well with AJAX frameworks such as Prototype and Mochikit. It comes with an elegant ORM framework and runs with Zope Page Templates (Simpletal project) out of the box. (site says: “Please note that this project is dead” and directs people to Django and/or Pylons)

  • Python Server Pages, or PSP (old Web site from 1999, dead link)

  • Python Servlet Engine (3.0.4 Released 2006-02-17) PSE parses your templates into byte compiled “servlets” to produce Web pages that run fast. (site says: “NOTE: The PSE Project is officially closed as of 3/28/2010”)

  • QP (2.2 Released 2009-08-25) a package for defining and running multiple Web applications that are based on Durus for persistence, offering standard persistent Session and User classes, easy interactive database sessions, and QPY for safely assembling html. Packages require and run on Python >= 2.4 and yes that includes Python 3.x with the same code base!

  • Repoze.bfg (1.3) BFG is a “pay only for what you eat” Python web framework . BFG is a Python web application framework based on WSGI. BFG is also referred to as repoze.bfg. Ancestor of (and supplanted by) Pyramid.

  • Responder (2.0.7 released 2021-01-08) is a web service framework, that lets you easily serve a ASGI app, with a production static files server (WhiteNoise) pre-installed, jinja2 templating (without additional imports), and a production webserver based on uvloop, serving up requests with gzip compression automatically.

  • SkunkWeb (3.4.0 Released 2004-09-10)

  • Snakelets (1.50 Released 2008-10) simple-to-use Python Web application server. Announced as discontinued upon release of version 1.50. As of 2013-08-13, dead link

  • Spark (0.2.1 Released 2006-9-15) Fast and lightweight Web kit. Supports mod_python, WSGI, Twisted. (2010-03-15, site hasn’t responded for a week or so, seems dead; 2013-08-13, dead link).

  • Spiked (0.1.3 Released 2010-01-23) - web development framework built on a top of Twisted and Cheetah.

  • Spyce (2.1.3 Released 2006-11-17)

  • Wasp (2.00 Released 2007.07) - supports command-line, CGI and embedded web server modes, with templating, session mechanism and other modules emphasizing ease of use and familiar paradigms. (2010-03-15, website indicates that it is no longer active: “I AM SORRY BUT WASP WILL NOT BE RETURNING. I simply have no time for this venture, seeing as how I am working towards my masters…”; 2013-08-13, dead link)

  • WebBot (0.5.0 Released 2013-04-10) - A QT inspired web framework that includes a graphical interface builder, AJAX abstraction, and integration support for Google’s AppEngine.

  • WebStack (1.2.7 Released 2007-10-29) - very lightweight, requiring layers of extra technology (such as XSLTools and others) to match full-stack frameworks in feature comparisons

  • WHIFF (1.1 Released 2013-07-09) WHIFF is a collection of support services for WSGI/Python web applications which allows applications to be composed by “dropping” dynamic pages into container directories. It automatically includes support for advanced features such as AJAX, jQueryUI widgets, Flash based charts and more. Extensive documentation and tutorial essays.

1.6. Books and Articles

1.7. Content Management Systems

Content management systems (CMS) often allow you to build applications like functionality upon them and typically provide many of the facilities seen in full-stack frameworks. See ContentManagementSystems for more details.

1.8. Web Components

Some frameworks promote interoperable components for things like templating/output and authentication/authorization, and so you might see users of different frameworks actually using the same component or library. See WebComponents for details of such components.

1.9. Web Client Frameworks

In contrast to server-oriented frameworks which may offer AJAX (asynchronous JavaScript and XML) support by serving pre-packaged (inflexible and highly specific but otherwise very useful) JavaScript components, and offering server-side support for requests made by such JavaScript components, Web client frameworks take more direct advantage of the dynamic capabilities of browser engines. Ways in which the full potential of browser engines can be realized are, for example, by compiling Python code into JavaScript or by embedding a Python interpreter into the Web browser itself. In some cases, Web browser engines can be run within separate customized applications rather than in a “web browser” per se. See Web Browser Programming for details.

1.10. See Also

More information on python web frameworks can be found here:

Other related wiki pages:

1.11. Editorial Note

The above lists should be arranged in ascending alphabetical order - please respect this when adding new solutions. When specifying release dates please use the format YYYY-MM-DD.

Some special notes to contributors to this page who like to assume an advocacy position when “reorganizing” the content:

  • Do not remove editorial guidelines: when people do this it not only indicates that they do not care about such guidelines, but it also leads others to believe that the page never had any structure or purpose.

  • If you must change the categories used on this page, at least attempt to assign all frameworks to meaningful categories. Do not invent special categories in order to elevate the profile of certain projects. Do not merge categories and put frameworks into a miscellaneous category.

  • Do not add links to projects unless they are Web frameworks. Instead, use the WebComponents, WebServers, Templating pages, or any page referenced by WebProgramming.

  • Some frameworks are not actively developed or maintained. Do not just move entries into the “Discontinued/Inactive Frameworks” section without at least doing some investigation first.

  • Popular is a bit of an arbitrary classification. For something to be considered popular a good guideline would be that it is in the top 4000 packages as per Top PyPI Packages.

And some basic editing advice: use the preview button when making edits, rather than leaving tens of micro-changes in the history.


CategoryPythonWebsite