Differences between revisions 30 and 31
Revision 30 as of 2006-11-12 01:48:45
Size: 10397
Editor: ip59934ba8
Comment: enhanced spelling & consistency
Revision 31 as of 2006-11-12 15:03:08
Size: 10398
Editor: PaulBoddie
Comment: Leave "Web" as it is!
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
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. 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.
Line 7: Line 7:
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. 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.
Line 11: Line 11:
These frameworks probably cover every area from providing a web server through database access and persistence to templating and presentation: These frameworks probably cover every area from providing a Web server through database access and persistence to templating and presentation:
Line 14: Line 14:
 * ["CherryPy"] (2.2.1 Released 2006-04-24) a pythonic, object-oriented web development framework. ["TurboGears"] (see below) also uses CherryPy.
 * [http://www.stackworks.net/view.php/cymbeline/index.html Cymbeline] (1.3.1 Released 2005-12-09) an application server framework, including functionality such as DB and arbitrary object pooling, web servers, persistant object repository, and a text console
 * ["Django"] (0.95 Released 2006-07-29) a high-level Python web framework that encourages rapid development and clean, pragmatic design
 * ["Karrigell"] (2.3.2 Released 2006-10-29) designed to be really simple to use : integrated web server and database
 * ["CherryPy"] (2.2.1 Released 2006-04-24) a pythonic, object-oriented Web development framework. ["TurboGears"] (see below) also uses CherryPy.
 * [http://www.stackworks.net/view.php/cymbeline/index.html Cymbeline] (1.3.1 Released 2005-12-09) an application server framework, including functionality such as DB and arbitrary object pooling, Web servers, persistant object repository, and a text console
 * ["Django"] (0.95 Released 2006-07-29) a high-level Python Web framework that encourages rapid development and clean, pragmatic design
 * ["Karrigell"] (2.3.2 Released 2006-10-29) designed to be really simple to use : integrated Web server and database
Line 19: Line 19:
 * [http://pythonpaste.org/ Python Paste] (1.0 Released 2006-10-23) brings consistency to Python web development and web application installation, providing tools for both developers and system administrators. Also, Pylons (see below) is built on top of Paste.
 * [http://pylonshq.com/ Pylons] (0.9.3 Released 2006-11-01) a lightweight web framework emphasizing flexibility and rapid development. It combines the very best ideas from the worlds of Ruby, Python and Perl, providing a structured but extremely flexible Python web framework. It's also one of the first projects to leverage the emerging WSGI standard, which allows extensive re-use and flexibility but only if you need it. Out of the box, Pylons aims to make web development fast, flexible and easy. Pylons is built on top of Paste (see above)
 * [http://www.pylucid.org PyLucid] (v0.7.0RC4 Released 2006-08-30) one of the ContentManagementSystems available for Python, but you can easily make your web application as a !PyLucid Plugin and then use the other features provided by !PyLucid. See the [http://pylucid.org/index.py/DeveloperInfo/ developer information] for details.
 * [https://www.mems-exchange.org/software/qp/ QP] (1.8 Released 2006-08-22) 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, qpy for assembling html.
 * [http://pythonpaste.org/ Python Paste] (1.0 Released 2006-10-23) brings consistency to Python Web development and Web application installation, providing tools for both developers and system administrators. Also, Pylons (see below) is built on top of Paste.
 * [http://pylonshq.com/ Pylons] (0.9.3 Released 2006-11-01) a lightweight Web framework emphasizing flexibility and rapid development. It combines the very best ideas from the worlds of Ruby, Python and Perl, providing a structured but extremely flexible Python Web framework. It's also one of the first projects to leverage the emerging WSGI standard, which allows extensive re-use and flexibility but only if you need it. Out of the box, Pylons aims to make Web development fast, flexible and easy. Pylons is built on top of Paste (see above)
 * [http://www.pylucid.org PyLucid] (v0.7.0RC4 Released 2006-08-30) one of the ContentManagementSystems available for Python, but you can easily make your Web application as a !PyLucid Plugin and then use the other features provided by !PyLucid. See the [http://pylucid.org/index.py/DeveloperInfo/ developer information] for details.
 * [https://www.mems-exchange.org/software/qp/ QP] (1.8 Released 2006-08-22) 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, qpy for assembling html.
Line 25: Line 25:
 * [http://www.turbogears.org/ TurboGears] (1.0b1 Released 2006-09-07) the rapid web development megaframework you've been looking for. Combines ["CherryPy"], Kid, SQLObject and MochiKit.
 * [http://webpy.org/ web.py] (.138 Released 2006-05-09) Think about the ideal way to write a web app. Write the code to make it happen.
 * [http://www.webwareforpython.org/ Webware] (0.9.2 Released 2006-09-18) a suite of Python packages and tools for developing object-oriented, web-based applications
 * [http://www.turbogears.org/ TurboGears] (1.0b1 Released 2006-09-07) the rapid Web development megaframework you've been looking for. Combines ["CherryPy"], Kid, SQLObject and MochiKit.
 * [http://webpy.org/ web.py] (.138 Released 2006-05-09) Think about the ideal way to write a Web app. Write the code to make it happen.
 * [http://www.webwareforpython.org/ Webware] (0.9.2 Released 2006-09-18) a suite of Python packages and tools for developing object-oriented, Web-based applications
Line 34: Line 34:
 * ["Albatross"] (1.35 Released 2006-06-20) a small and flexible Python toolkit for developing highly stateful web applications.
 * ["Aquarium"] (2.2.1 Released 2005-04-21) offers convenient libraries, tight integration with Cheetah, adaptors for various web environments
 * BaseHttpServer (along with successors such as DocXmlRpcServer) can be considered as the original Python web framework
 * [http://divmod.org/trac/wiki/DivmodNevow Divmod Nevow] (0.9.0 Released 2006-06-12) 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 ([http://divmod.org/trac/wiki/DivmodNevow/Athena Divmod Athena]) which supports the creation of highly dynamic web pages in a structured manner.
 * ["Albatross"] (1.35 Released 2006-06-20) a small and flexible Python toolkit for developing highly stateful Web applications.
 * ["Aquarium"] (2.2.1 Released 2005-04-21) offers convenient libraries, tight integration with Cheetah, adaptors for various Web environments
 * BaseHttpServer (along with successors such as DocXmlRpcServer) can be considered as the original Python Web framework
 * [http://divmod.org/trac/wiki/DivmodNevow Divmod Nevow] (0.9.0 Released 2006-06-12) 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 ([http://divmod.org/trac/wiki/DivmodNevow/Athena Divmod Athena]) which supports the creation of highly dynamic Web pages in a structured manner.
Line 39: Line 39:
 * ["JOTWeb2"] (1.10 Released 2005-12-30) developing dynamic web applications using HTML and TAL/TALES/METAL for templating  * ["JOTWeb2"] (1.10 Released 2005-12-30) developing dynamic Web applications using HTML and TAL/TALES/METAL for templating
Line 41: Line 41:
 * [http://www.myghty.org/ Myghty ] (1.0 Released 2006-01-27) web application framework originally ported from HTML::Mason
 * [http://nick.borko.org/pse/index.html 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
 * [http://www.myghty.org/ Myghty ] (1.0 Released 2006-01-27) Web application framework originally ported from HTML::Mason
 * [http://nick.borko.org/pse/index.html 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
Line 44: Line 44:
 * [http://www.mems-exchange.org/software/quixote/ Quixote] (2.4 Released 2005-12-13) to develop dynamic web sites while using as much of their existing Python knowledge as possible
 * [http://snakelets.sourceforge.net/ Snakelets] (1.44 Released 2006-06-04) simple-to-use Python web application server
 * [http://trac.pytan.com/ Spark] (0.2.1 Released 2006-9-15) Fast and lightweight web kit. Supports mod_python, WSGI, Twisted.
 * [http://www.mems-exchange.org/software/quixote/ Quixote] (2.4 Released 2005-12-13) to develop dynamic Web sites while using as much of their existing Python knowledge as possible
 * [http://snakelets.sourceforge.net/ Snakelets] (1.44 Released 2006-06-04) simple-to-use Python Web application server
 * [http://trac.pytan.com/ Spark] (0.2.1 Released 2006-9-15) Fast and lightweight Web kit. Supports mod_python, WSGI, Twisted.
Line 54: Line 54:
 * [http://www.voidspace.org.uk/python/modules.shtml#dataenc Dataenc] - allows secure and time limited logins to be encoded into webpages for use with web applications  * [http://www.voidspace.org.uk/python/modules.shtml#dataenc Dataenc] - allows secure and time limited logins to be encoded into Web pages for use with Web applications
Line 68: Line 68:
 * Steve Holden wrote a book on [http://pydish.holdenweb.com/pwp/ Python Web Programming]. The book from John Goerzen, [http://www.apress.com/book/bookDisplay.html?bID=363 Foundations of Python Network Programming], can also be useful. O'Reilly's [http://www.oreilly.com/catalog/python3/ Programming Python 3rd Edition] has 500 pages on Internet programming, including 250 on web scripting. Finally, check out the Web Programming chapter in [http://starship.python.net/crew/wesc/cpp/ Core Python Programming] by Wesley Chun.  * Steve Holden wrote a book on [http://pydish.holdenweb.com/pwp/ Python Web Programming]. The book from John Goerzen, [http://www.apress.com/book/bookDisplay.html?bID=363 Foundations of Python Network Programming], can also be useful. O'Reilly's [http://www.oreilly.com/catalog/python3/ Programming Python 3rd Edition] has 500 pages on Internet programming, including 250 on Web scripting. Finally, check out the Web Programming chapter in [http://starship.python.net/crew/wesc/cpp/ Core Python Programming] by Wesley Chun.
Line 74: Line 74:
 * [http://pyre.third-bit.com/pyweb/index.html PyWebOff: A bakeoff of Python web application frameworks], together with a [http://pyre.third-bit.com/pywebblog/ blog] giving thoughts on writing a single application in multiple different web frameworks.  * [http://pyre.third-bit.com/pyweb/index.html PyWebOff: A bakeoff of Python Web application frameworks], together with a [http://pyre.third-bit.com/pywebblog/ blog] giving thoughts on writing a single application in multiple different Web frameworks.

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.

Full-Stack Frameworks

These frameworks probably cover every area from providing a Web server through database access and persistence to templating and presentation:

  • ["4Suite"] (XML-1.0rc3 Released 2006-08-28)
  • ["CherryPy"] (2.2.1 Released 2006-04-24) a pythonic, object-oriented Web development framework. ["TurboGears"] (see below) also uses CherryPy.

  • [http://www.stackworks.net/view.php/cymbeline/index.html Cymbeline] (1.3.1 Released 2005-12-09) an application server framework, including functionality such as DB and arbitrary object pooling, Web servers, persistant object repository, and a text console

  • ["Django"] (0.95 Released 2006-07-29) a high-level Python Web framework that encourages rapid development and clean, pragmatic design
  • ["Karrigell"] (2.3.2 Released 2006-10-29) designed to be really simple to use : integrated Web server and database
  • [http://plone.org/ Plone] (2.5 Released 2006-06-17) a Python based content management system running on Zope application server.

  • [http://pythonpaste.org/ Python Paste] (1.0 Released 2006-10-23) brings consistency to Python Web development and Web application installation, providing tools for both developers and system administrators. Also, Pylons (see below) is built on top of Paste.

  • [http://pylonshq.com/ Pylons] (0.9.3 Released 2006-11-01) a lightweight Web framework emphasizing flexibility and rapid development. It combines the very best ideas from the worlds of Ruby, Python and Perl, providing a structured but extremely flexible Python Web framework. It's also one of the first projects to leverage the emerging WSGI standard, which allows extensive re-use and flexibility but only if you need it. Out of the box, Pylons aims to make Web development fast, flexible and easy. Pylons is built on top of Paste (see above)

  • [http://www.pylucid.org PyLucid] (v0.7.0RC4 Released 2006-08-30) one of the ContentManagementSystems available for Python, but you can easily make your Web application as a PyLucid Plugin and then use the other features provided by PyLucid. See the [http://pylucid.org/index.py/DeveloperInfo/ developer information] for details.

  • [https://www.mems-exchange.org/software/qp/ QP] (1.8 Released 2006-08-22) 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, qpy for assembling html.

  • SkunkWeb (3.4.0 Released 2004-09-10)

  • [http://spyce.sf.net/ Spyce] (2.1 Released 2006-08-13)

  • [http://www.turbogears.org/ TurboGears] (1.0b1 Released 2006-09-07) the rapid Web development megaframework you've been looking for. Combines ["CherryPy"], Kid, SQLObject and MochiKit.

  • [http://webpy.org/ web.py] (.138 Released 2006-05-09) Think about the ideal way to write a Web app. Write the code to make it happen.

  • [http://www.webwareforpython.org/ Webware] (0.9.2 Released 2006-09-18) a suite of Python packages and tools for developing object-oriented, Web-based applications

  • [http://www.zope.org/ Zope] (2.10.0 Released 2006-10-03, 3.3.0 Released 2006-09-27) a server for building ContentManagementSystems, intranets, portals, and custom applications.

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:

  • ["Albatross"] (1.35 Released 2006-06-20) a small and flexible Python toolkit for developing highly stateful Web applications.
  • ["Aquarium"] (2.2.1 Released 2005-04-21) offers convenient libraries, tight integration with Cheetah, adaptors for various Web environments
  • BaseHttpServer (along with successors such as DocXmlRpcServer) can be considered as the original Python Web framework

  • [http://divmod.org/trac/wiki/DivmodNevow Divmod Nevow] (0.9.0 Released 2006-06-12) 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 ([http://divmod.org/trac/wiki/DivmodNevow/Athena Divmod Athena]) which supports the creation of highly dynamic Web pages in a structured manner.

  • ["JonsPythonModules"] (1.06 Released 2004-04-11) a set of simple yet powerful multi-threaded object-oriented CGI/FastCGI/mod_python/html-templating modules for Python

  • ["JOTWeb2"] (1.10 Released 2005-12-30) developing dynamic Web applications using HTML and TAL/TALES/METAL for templating
  • ["maki"]
  • [http://www.myghty.org/ Myghty ] (1.0 Released 2006-01-27) Web application framework originally ported from HTML::Mason

  • [http://nick.borko.org/pse/index.html 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

  • [http://www.stroeder.com/pylib/PyWebLib/ PyWebLib] (1.3.4) - provides support for forms and sessions; used to implement web2ldap

  • [http://www.mems-exchange.org/software/quixote/ Quixote] (2.4 Released 2005-12-13) to develop dynamic Web sites while using as much of their existing Python knowledge as possible

  • [http://snakelets.sourceforge.net/ Snakelets] (1.44 Released 2006-06-04) simple-to-use Python Web application server

  • [http://trac.pytan.com/ Spark] (0.2.1 Released 2006-9-15) Fast and lightweight Web kit. Supports mod_python, WSGI, Twisted.

  • ["WebStack"] (1.1.2 Released 2006-01-11) - very lightweight, requiring layers of extra technology (eg. [http://www.python.org/pypi/XSLTools XSLTools] and others) to match full-stack frameworks in feature comparisons

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

Currently (Sep 2006), ["Zope"], ["TurboGears"] and ["Django"] seem to be the most popular full-stack frameworks.

Frameworks in Books

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

  • ["Slither"]

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

  • Opinions based on experience are welcome, but framework or templating system authors should sign their comments with InTheirOwnWords to admit to a certain bias.

  • The rather strict format of the main entries (described in WebProgrammingTemplateHelp) should not been seen as a limit. Feel free to add new pages containing examples, direct comparisons etc.

  • When adding new entries choose WebProgrammingTemplate when creating the page.

WebFrameworks (last edited 2024-03-20 14:10:26 by CoMelissant)

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