Differences between revisions 1 and 216 (spanning 215 versions)
Revision 1 as of 2002-07-12 22:29:49
Size: 1284
Editor: anonymous
Comment: missing edit-log entry for this revision
Revision 216 as of 2005-12-15 23:15:41
Size: 10522
Editor: FredDrake
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
This topic guide is a word by word copy of Paul Boddie's
[http://www.boddie.org.uk/python/web_frameworks.html Python Web Frameworks Overview]. Putting it into Wiki format hopefully allows more people to contribute.
#pragma section-numbers off
Line 4: Line 3:
The main purpose of this topic guide is to help in choosing a framework for web programming without having to learn each of them. In addition, information about different PresentationTechnologies is also provided, where appropriate, since this can be a major deciding factor in choosing a framework. = Web Programming in Python =
Line 6: Line 5:
Although comments and clarifications by the framework authors are very much appreciated, adding a standard signature like InTheirOwnWords would help to bring words like 'easy' and 'intuitive' into context. This topic guide links to the frameworks and templating systems available for Web programming in Python. When deciding to develop Web applications or services, you would usually choose a solution from the list below and then possibly hook it up with a templating system and other components such as database access toolkits, if the solution doesn't provide them - some such as Zope provide virtually everything you can think of!
Line 8: Line 7:
The rather strict format of the main entries should not been seen as a limit. Feel free to add new pages containing examples, direct comparisons etc. == Python-based Solutions ==
Line 10: Line 9:
Known frameworks: The listing is '''up-to-date as of 2005-09-24'''

=== Standardisation and Standardisation Proposals ===

    * ["WebStack"]
    * [http://www.python.org/peps/pep-0333.html PEP 333: Web Server Gateway Interface] - see also ["WSGIImplementations"]
    * [http://furius.ca/indra/ Indra]

=== Web Servers ===

    * TwistedMatrix includes a very scalable web server written in Python.
    * [http://www.amk.ca/python/code/medusa.html Medusa, a simple framework for standalone server applications]

=== Application Frameworks ===

    * ["Albatross"] - "Albatross is a toolkit for developing highly stateful web applications."
    * ["Aquarium"] - "... provides an approach to producing a Web application without duplication of effort by reducing the amount of code you need to write..."
    * CherryPy - "CherryPy allows developers to build web applications in much the same way they would build any other object-oriented Python program"
    * [http://www.stackworks.net/cymbeline/ Cymbeline] - "It was originally designed as an administrative shell for an embedded system, but has since morphed into a more general purpose, run anywhere toolkit."
    * ["Django"] - "Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design." It's full-stack, meaning it includes each piece of the puzzle -- a custom object-relational mapper, template system, request/response framework -- yet each piece is loosely coupled and can be swapped out for other tools.
    * ["Draco"]
    * ["iKaaro"]
    * [http://csoki.ki.iif.hu/~vitezg/impostor/ Impostor]
    * [http://www.ikaaro.org/itools itools]
    * JonsPythonModules
    * [http://jotweb.tummy.com/ JOTWeb]
    * ["Karrigell"]
    * [http://www.amk.ca/python/code/medusa.html Medusa]
    * [http://www.divmod.org/projects/nevow Nevow]
    * [http://pythonpaste.org Paste]
    * [http://nick.borko.org/pse/works.html Python Servlet Engine]
    * PythonWebModules see also the [http://www.pythonweb.org Web Modules Homepage]
    * [http://pywork.sf.net PyWork]
    * ["Quixote"]
    * SkunkWeb
    * [http://snakelets.sourceforge.net/ Snakelets]
    * [http://snakeskin-tools.sourceforge.net SnakeSkin]
    * [http://subway.python-hosting.com/ Subway]
    * [http://www.turbogears.org/ TurboGears] - a framework combining other frameworks: Mochikit (AJAX javascript library), KID (Template library), CherryPy, and SQLObject; another competitor to RAILS
    * TwistedMatrix
    * ["Wareweb"]
    * ["Webware"]
Line 12: Line 52:
    * WebWare
    * SkunkWeb
    * TwistedMatrix
    * ["Quixote"]
    * ["Albatross"]
    * JonsPythonModules
    * [http://www.gnucitizen.org Monk] - simple CherryPy/Rails like framework

=== Server-embedded Python ===

    * ModPython for Apache
    * ["PyWX"] for AOLServer

=== Web-based XML processing engines ===

    * ["4Suite"]
    * ["maki"]

== Templating Engines ==

There are many, many different HTML/XML templating libraries for Python that provide different feature sets and syntaxes. These libraries usually assume that you know how to write HTML or XML.

The number of libraries is so great because such libraries are pretty easy to write in Python; [http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52305 this recipe from the Python Cookbook] shows how easy it is.

    * [http://airspeed.pythonconsulting.com/ Airspeed] - Velocity Templates for Python
    * ["Castalian"]
    * ["Cheetah"]
    * CubicTemp
    * [http://www.djangoproject.com/documentation/templates/ Django template system]
    * [http://www.nthwave.net/elements/ Elements]
    * EmPy
    * [http://freespace.virgin.net/hamish.sanderson/htmltemplate.html HTMLTemplate]
    * [http://htmltmpl.sourceforge.net/ htmltmpl]
    * [http://lesscode.org/projects/kid/ Kid]
    * [http://www.myghty.org/ Myghty]
    * ["pso"]
    * [http://www.entrian.com/PyMeld PyMeld]
    * [http://www.owlfish.com/software/simpleTAL/ SimpleTAL]
Line 19: Line 85:
    * CherryPy
    * ["maki"]
    * ClearSilver
    * ScriptFoundryModules
    * add new entries by using the code in the WebProgrammingTemplate
    * [http://www.pytan.com/spytee.html Spytee]
    * ["teng"]
    * [http://www.execulink.com/~robin1/wasp/readme.html WASP]
    * [http://www.livinglogic.de/Python/xist/ XIST]
   
=== HTML Shorthand Processors ===
Line 25: Line 92:
Is there any interest in a WebProgrammingShootOut? The libraries in this section implement simpler markup languages
that can be automatically converted to HTML. This lets you avoid having to write HTML
by hand.
Line 27: Line 96:
Editor: DanielDittmar     * [http://www.methods.co.nz/asciidoc/ AsciiDoc]
    * PyTextile
    * ReStructuredText
    * [http://txt2tags.sourceforge.net/ txt2tags]

=== HTML Generation class libraries ===
 
   * [http://starship.python.net/crew/friedrich/HTMLgen/html/main.html HTMLgen]
   * [http://dustman.net/andy/python/HyperText/ HyperText]
   * [http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/366000 HTMLTags ]
   * [http://www.livinglogic.de/Python/xist/ XIST ]

=== Jython-accessible Java Templating Engines ===

   * [http://www.webmacro.org/ WebMacro]
   * [http://jakarta.apache.org/velocity/index.html Velocity]
   * [http://java.sun.com/products/jsp Java Server Pages, JSP]
   * [http://freemarker.org/index.html FreeMarker] (with Jython data binding)

=== CPython-accessible C Templating Engines ===

    * ClearSilver (HTML generation)

== Utility modules ==
 
    * [http://www.chrisarndt.de/en/software/python/#auth Auth modules] - a module collection for authentication purposes
    * [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://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/305288 HTTP basic authentication example]

= Related Links =

See also:
 * [http://www.python.org/topics/web/ The old but still useful Web Programming topic guide]
 * [http://www.python.org/sigs/web-sig/ Web SIG] (the Python Web Special Interest Group)
 * WebClientProgramming
 * DatabaseProgramming (guidance on available DatabaseInterfaces and related tools)
 * CgiScripts (information on writing CGIs in python)
 * ContentManagementSystems (Web frameworks can be used to build these)

Books and articles:
 * 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. Finally, check out the Web Programming chapter in [http://starship.python.net/crew/wesc/cpp/ Core Python Programming] by Wesley Chun.
 * [http://www.tossed.org/modules.php?name=News&file=article&sid=12 Developing With Mod_Python] - an article on Mod_Python programming with Cheetah Templates and MySQL. Contains code samples.
 * [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.
 * The [http://colorstudy.com/docs/shootout.html Web Framework Shootout] also covers several of the frameworks listed in this document.
 * The [http://benjiyork.com/quick_start Zope 3 Quick Start Guide] gives a short introduction to Zope 3.

Historical information:
 * This topic guide started out as a word by word copy of PaulBoddie's [http://www.boddie.org.uk/python/web_frameworks.html Python Web Frameworks Overview].
 * OriginalWebProgrammingClassification is an older listing of Python-related web tools, and is now out of date and only of historical interest.
 * ["PythonAndJ2EE"] (comparison of various frameworks to J2EE) is also an older document of mostly historical interest.

==== Notes on Editing ====

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 Web``Programming``Template when creating the page.

==== To Do ====

    * The templating systems should really get a different page layout, showing examples etc.
    * Describe PHP and Java in the same format as quite a few will want to compare to them anyway
    * Is there any interest in a WebProgrammingShootOut?

Editor: DanielDittmar (this means only that I will adapt the entries to changes in the WebProgrammingTemplate and that I will try to keep the version entries current)

== Discussion ==

For a set of comparisons of my real-world experiences with a bunch of the web solutions described on this page, check my WebSolutionComparison page. These are NOT impartial and unbiased comparisons; these are my personal experiences from building real web sites. Feel free to add your own comparisons.

-- TimRoberts

Wait- I don't understand-

Why were BaseHttpServer, DocXmlRpcServer, CgiScripts taken out?

I'd think that on a page on WebProgramming, those things would be listed.

-- LionKimbro [[DateTime(2004-08-02T14:36:38Z)]]

Other things:

 * The reorganisation is presumably to help people find the right framework - things like simple CGI-based APIs might not be cutting edge stuff, but they're potentially very useful if you don't have a "full" hosting account.
 * I didn't really agree with some aspects of the revised classifications. I think the template systems need their own page, and the multiple classifications really need banishing to another page where they'll confuse only the experts.

-- PaulBoddie

I'm afraid we need more fine-grained classification. It is unclear which of these components can be used together with others (say: is [http://www.chrisarndt.de/en/software/python/#auth Auth modules] compatible with CGI
or mod_python?

-- Michal J. Gajda

If you want web programming to be more accessible, maybe you should avoid titles like "Variable Insertion-Replacement Templating Applications"?

-- FredrikLundh

Web Programming in Python

This topic guide links to the frameworks and templating systems available for Web programming in Python. When deciding to develop Web applications or services, you would usually choose a solution from the list below and then possibly hook it up with a templating system and other components such as database access toolkits, if the solution doesn't provide them - some such as Zope provide virtually everything you can think of!

Python-based Solutions

The listing is up-to-date as of 2005-09-24

Standardisation and Standardisation Proposals

Web Servers

Application Frameworks

Server-embedded Python

Web-based XML processing engines

  • ["4Suite"]
  • ["maki"]

Templating Engines

There are many, many different HTML/XML templating libraries for Python that provide different feature sets and syntaxes. These libraries usually assume that you know how to write HTML or XML.

The number of libraries is so great because such libraries are pretty easy to write in Python; [http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52305 this recipe from the Python Cookbook] shows how easy it is.

HTML Shorthand Processors

The libraries in this section implement simpler markup languages that can be automatically converted to HTML. This lets you avoid having to write HTML by hand.

HTML Generation class libraries

Jython-accessible Java Templating Engines

CPython-accessible C Templating Engines

Utility modules

Related Links

See also:

Books and articles:

Historical information:

Notes on Editing

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.

To Do

  • The templating systems should really get a different page layout, showing examples etc.
  • Describe PHP and Java in the same format as quite a few will want to compare to them anyway
  • Is there any interest in a WebProgrammingShootOut?

Editor: DanielDittmar (this means only that I will adapt the entries to changes in the WebProgrammingTemplate and that I will try to keep the version entries current)

Discussion

For a set of comparisons of my real-world experiences with a bunch of the web solutions described on this page, check my WebSolutionComparison page. These are NOT impartial and unbiased comparisons; these are my personal experiences from building real web sites. Feel free to add your own comparisons.

-- TimRoberts

Wait- I don't understand-

Why were BaseHttpServer, DocXmlRpcServer, CgiScripts taken out?

I'd think that on a page on WebProgramming, those things would be listed.

-- LionKimbro DateTime(2004-08-02T14:36:38Z)

Other things:

  • The reorganisation is presumably to help people find the right framework - things like simple CGI-based APIs might not be cutting edge stuff, but they're potentially very useful if you don't have a "full" hosting account.
  • I didn't really agree with some aspects of the revised classifications. I think the template systems need their own page, and the multiple classifications really need banishing to another page where they'll confuse only the experts.

-- PaulBoddie

I'm afraid we need more fine-grained classification. It is unclear which of these components can be used together with others (say: is [http://www.chrisarndt.de/en/software/python/#auth Auth modules] compatible with CGI or mod_python?

-- Michal J. Gajda

If you want web programming to be more accessible, maybe you should avoid titles like "Variable Insertion-Replacement Templating Applications"?

-- FredrikLundh

WebProgramming (last edited 2008-11-15 13:59:44 by localhost)

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