Hi,
many of you are already familiar with Cheetah: a
Python-powered template engine and code generator that grew
out of discussions here on the webware-discuss list.
Cheetah was designed for internet development and provides
integration with Webware. Together with Webware, Cheetah is
a compelling alternative to ASP, JSP, PHP and PSP for
building dynamic web sites.
Last month, we shifted the development discussions to
[EMAIL PROTECTED] and created
http://www.CheetahTemplate.org. Cheetah has matured a lot
since then.
**Version 0.9.7 was released a few hours ago.** It
includes fixes for almost all outstanding bugs, a
beefed-up regression test suite, and an updated Users'
Guide.
Cheetah is Open Source Software and we welcome
contributions and suggestions. We also welcome any general
discussion about Python-based templates on the
cheetahtemplate-discuss e-mail list. You can subscribe and
view the archives at:
http://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
Tavis Rudd (me), Mike Orr, Chuck Esterbrook, Ian Bicking
and Tom Schwaller are the core developers.
More information is in the attached file and at
http://cheetahtemplate.org/
Cheers,
Tavis
Title: %(title)s
1.1 What is Cheetah?
Cheetah is a Python-based template engine and code generator.
A template is like a form letter: text with placeholders for the data
that needs to be filled in. Python's % operator provides a primitive
tool for working with templates:
>>> print """
...
...
Hello World!
1.2 What is the philosophy behind Cheetah?
Cheetah aims:
* to make it easy to separate content, graphic design, and program
code.
A clean separation makes it easier for a team of content writers,
HTML/graphic designers, and programmers to work together without
stepping on each other's toes and polluting each other's work. The
HTML framework and the content it contains are two separate
things, and analytical calculations (program code) are another.
Each team member should be able to concentrate on their specialty
and to implement their changes without having to go through one of
the others: i.e. the webmaster bottleneck.
Other advantages to separation include:
+ faster development time.
+ HTML and program code that is easier to understand and
maintain.
+ content that can be displayed in a variety of non-HTML
formats such as PDF.
+ highly modular, flexible, and reusable site architectures.
* to make it easy to integrate content, graphic design, and program
code.
While it should be easy to develop content, graphics and program
code separately, it should be easy to integrate them together into
a web site. In particular, it should be easy:
* for programmers to create reusable components and functions that
are accessible and understandable to designers.
* for designers to mark out placeholders for content and dynamic
components in their templates.
* for designers to soft-code aspects of their design that are either
repeated in several places or are subject to change.
* for designers to extend and customize existing templates and thus
minimize duplication of effort and code.
* and, of course, for content writers to use the templates that
designers have created.
to provide template designers with a small set of 'Display Logic'
programming structures such as conditional blocks and for loops
Graphic designers often do tasks that would be easier, faster, and
less error prone if they had access to conditional blocks and for
loops. However, a full programming language would be overkill for
these simple tasks and most designers don't have the time or desire to
learn one. Complex logic belongs in Python code.
to be equally well-suited for HTML, SGML, XML, SQL, Postscript, form
email, LaTeX, or any other text-based format.
Although Cheetah was designed with dynamic web sites and web
applications in mind, it is not HTML-specific.
to be efficient, flexible and extendable.
Cheetah achieves these aims by:
* blending the power and flexibility of Python with the simplicity
of a small Template Definition Language (TDL) that non-programmers
can understand.
Cheetah's Template Definition Language is robust, but limited.
It's limited because it's meant to complement Python, not replace
it. A placeholder may be a simple attribute, a function call, or a
method call, but it may not be a complex expression with
operators. Complex calculations should be done outside the
template in Python code.
* giving template designers a simple way of accessing Python
variables, objects, and functions in their templates.
* providing a modular, object-oriented framework that makes it easy
to create and maintain large web sites.
* compiling 'Template Definitions' into native Python code at
startup. The code is then executed for each request. This approach
is dramatically faster than the string-substitution approach used
by many templating engines.
* providing a very simple-yet powerful-caching mechanism that can
significantly increase the responsiveness of a dynamic web site.
1.3 Why is it called Cheetah?
Cheetah is fast, flexible, agile and graceful - like its namesake.
1.4 Who developed Cheetah?
Cheetah is one of several templating frameworks that grew out of a
'templates' thread on the Webware For Python email list. Tavis Rudd,
Mike Orr, Chuck Esterbrook, Ian Bicking and Tom Schwaller are the core
developers.
1.5 How mature is Cheetah?
Cheetah is alpha/beta software as this Users' Guide is incomplete and
several aspects of the design are still subject to change. We are
hoping to release production version 1.0 in the summer of 2001.
Here's a summary of known issues and aspects of the design that are in
flux.
* The #include directive is not working with relative path file
includes when used with Webware. This should be resolved soon.
* The #include directive is being reworked to monitor for changes in
the included file at run-time. It currently does the include
once-off at compile-time.
* The parsing of macros is currently being worked on to make it more
robust. However, the macro interface is stable.
1.6 Where can I get releases?
Download Cheetah releases from http://CheetahTemplate.sourceforge.net
1.7 Where can I get news?
News and updates can be obtained from the the Cheetah web site:
http://CheetahTemplate.sourceforge.net
Cheetah discussions take place on the list
[EMAIL PROTECTED]
If you encounter difficulties, or are unsure about how to do
something, please post a detailed message to the list.