Differences between revisions 218 and 305 (spanning 87 versions)
Revision 218 as of 2005-12-24 14:32:15
Size: 10604
Editor: int-gw
Comment:
Revision 305 as of 2008-11-15 13:59:44
Size: 1914
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
#acl All:read
Line 5: Line 6:
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! This topic guide attempts to cover every aspect of programming Web applications (both clients and servers) using Python.
Line 7: Line 8:
== Python-based Solutions == == Server Programming ==
Line 9: Line 10:
The listing is '''up-to-date as of 2005-09-24''' Topics concerned with writing providing Web applications, doing server-side programming, providing a Web site or pages which use Python in some way:
Line 11: Line 12:
=== Standardisation and Standardisation Proposals ===  * WebFrameworks - for developing server-side Web applications in Python
 * CgiScripts - information on writing CGI scripts/programs in Python when the WebFrameworks seem like too much work or aren't available at your provider
 * WebServers - server solutions written in (or using) Python
 * ContentManagementSystems - solutions specially designed for organising and publishing content
 * WebServices - tools for accessing and providing functionality via APIs over the Web
Line 13: Line 18:
    * ["WebStack"]
    * [http://www.python.org/peps/pep-0333.html PEP 333: Web Server Gateway Interface] - see also ["WSGIImplementations"]
    * [http://furius.ca/indra/ Indra]
== Client Programming ==
Line 17: Line 20:
=== Web Servers === Topics concerned with accessing Web applications, sites or pages using Python:
Line 19: Line 22:
    * 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]
 * WebBrowserProgramming - interfacing with existing browsers and browser technologies
 * WebClientProgramming - writing clients, typically at a lower level than a full Web browser
 * WebServices - tools for accessing and providing functionality via APIs over the Web
Line 22: Line 26:
=== Application Frameworks === == Related Links ==
Line 24: Line 28:
    * ["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 ([http://3d2f.com/tags/ajax/ AJAX] javascript library), KID (Template library), CherryPy, and SQLObject; another competitor to RAILS
    * TwistedMatrix
    * ["Wareweb"]
    * ["Webware"]
    * ["Zope"]
    * [http://www.gnucitizen.org Monk] - simple CherryPy/Rails like framework
Related topics of interest:
Line 54: Line 30:
=== Server-embedded Python ===  * WebStandardisation - working towards common solutions and APIs for Python Web programming
 * DatabaseProgramming - guidance on available DatabaseInterfaces and related tools
 * [[Templating]] - generating output, messages and more from Web applications
 * BuildAnIntranet - advice on how one might go about developing and deploying an intranet solution
Line 56: Line 35:
    * ModPython for Apache
    * ["PyWX"] for AOLServer
== Editorial Note ==
Line 59: Line 37:
=== 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]
    * ["Spyce"]
    * [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 ===

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.

    * [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)
 * [http://qaix.com/xml-development/ XML dev-forum]

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
This simplified start page replaces the previous "comprehensive" guide to Web programming. Unless adding a distinct category of Web programming, please add things like new frameworks to the appropriate page - not to this page.

Web Programming in Python

This topic guide attempts to cover every aspect of programming Web applications (both clients and servers) using Python.

Server Programming

Topics concerned with writing providing Web applications, doing server-side programming, providing a Web site or pages which use Python in some way:

  • WebFrameworks - for developing server-side Web applications in Python

  • CgiScripts - information on writing CGI scripts/programs in Python when the WebFrameworks seem like too much work or aren't available at your provider

  • WebServers - server solutions written in (or using) Python

  • ContentManagementSystems - solutions specially designed for organising and publishing content

  • WebServices - tools for accessing and providing functionality via APIs over the Web

Client Programming

Topics concerned with accessing Web applications, sites or pages using Python:

Related topics of interest:

Editorial Note

This simplified start page replaces the previous "comprehensive" guide to Web programming. Unless adding a distinct category of Web programming, please add things like new frameworks to the appropriate page - not to this page.

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

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