Quixote 0.30
============

Quixote is yet another framework for developing Web applications in
Python.  The design goals were:

	1) To make the templating language as similar to Python in
	semantics as possible.  The aim is to make
	as many of the skills and structural techniques used in 
	writing regular Python code applicable to Web applications
	built using Quixote.

	2) To allow easy development of Web applications where the
	accent is more on complicated programming logic than
	complicated templating.

	3) The entire system should be implementable in a week or two.
	
	4) No magical behaviour.  When it's not obvious what to do in
	a certain case, Quixote refuses to guess.  

We've tried to reuse as much existing code as possible:

	* The HTTPRequest and HTTPResponse classes come from Zope,
	  with some modifications (mostly cutting out Zope-specific
	  code).  They fall under the Zope Public Licence, available
	  in doc/ZPL.txt.

	* The quixote.util.fcgi module is Robin Dunn's FastCGI module,
	  originally available from  
          <URL:http://starship.python.net/crew/robind/#fcgi>.

Quixote requires Python 2.x to run, because it requires the compiler
code added in Python 2.0.  We only test Quixote with Python 2.1, but
it should still work with 2.0.


Overview
========

Quixote works by using a Python package to store all the code and HTML
for a Web-based application.  There's a simple framework for
publishing code and objects on the Web, and the publishing loop can be
customized by subclassing the Publisher class.  You can think of it as
a toolkit to build your own smaller, simpler version of Zope,
specialized for your application.

An application using Quixote is a Python package containing .py and
.ptl files.  

webapp/				# Root of package
	__init__.py			
	module1.py
	module2.py
	pages1.ptl
	pages2.ptl

PTL, Python Template Language, is used to mix HTML with Python code.
An import hook is defined so that PTL files can be imported just like
Python modules.  The basic syntax of PTL is Python's, with a few small
changes:

template barebones_header(title=None,
                          description=None):
    """
    <html><head>
    <title>%s</title>
    """ % html_quote(str(title))
    if description:
        '<meta name="description" content="%s">' % html_quote(description) 

    '</head><body bgcolor="#ffffff">'

See doc/PTL.txt for a detailed explanation of PTL.


-- 
A.M. Kuchling    <akuchlin@mems-exchange.org>
Neil Schemenauer <nascheme@mems-exchange.org>
Greg Ward        <gward@python.net>


