1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
<?xml version="1.0" encoding="latin-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Cheetah Community Engine - The Python-Powered Template Engine</title>
<link rel="stylesheet" href="screen.css" type="text/css" />
</head>
<body class="index"> <div class="banner" align="center">
<a href="index.html"><img
class="bannerImg" src="images/cheetah-face-black-medium.jpg" alt="" /></a>
<a href="index.html"><img class="bannerText" src="images/banner_text.gif"
alt="Cheetah Community Edition: The Python-Powered Template Engine" /></a>
</div>
<div class="pageOuterWrapper" align="center">
<div class="pageInnerWrapper0">
<div class="pageInnerWrapper1">
<div align="center" class="navBarContainer">
<a class="navBar activePage"
href="index.html">Overview</a>
<span class="navBarSep">|</span> <a class="navBar "
href="download.html">Download</a>
<span class="navBarSep">|</span> <a class="navBar "
href="learn.html">Docs</a>
<span class="navBarSep">|</span> <a class="navBar "
href="examples.html">Examples</a>
<span class="navBarSep">|</span> <a class="navBar "
href="whouses.html">Who Uses It?</a>
<span class="navBarSep">|</span> <a class="navBar "
href="praise.html">Testimonials</a>
<span class="navBarSep">|</span> <a class="navBar "
href="contribute.html">Help Out</a>
</div>
<div class="pageInnerWrapper2">
<div class="pageInnerWrapper3">
<div class="pageInnerWrapper4">
<div class="pageInnerWrapper5">
<table>
<tr valign="top">
<td>
<br />
<div align="center">
<img class="" src="images/cheetah-homepage-title.gif" alt="" />
</div>
<p>Cheetah Community Edition is a community supported release of the
Cheetah template engine and code generation tool,
template engine and code generation tool, written in <a
href="http://python.org/">Python</a>. It can be used standalone
or combined with other tools and frameworks. Web development is its
principle use, but Cheetah is very flexible and is also being used to
generate C++ game code, Java, sql, form emails and even Python code.</p>
<p>The reasons behind the Community Edition is to maintain active development
outside the mostly-stale <a href="http://sourceforge.net/scm/?type=cvs&group_id=28961">Cheetah CVS tree</a>.
Cheetah CE is not intended on diverging from the main goals of the original releases
of Cheetah, stability, speed and ease of use, but is to serve as a means of reinvigorating
the Cheetah community with <strong>monthly</strong> releases with patches provided by the
community as they're needed.
<p>Cheetah has a large and active user community. Products built with
Cheetah are <a href="whouses.html">used by many of the Fortune
500</a>. One prominent new user is <a
href="http://reddit.com/">reddit.com</a>, a startup funded by Paul
Graham. It has over 50,000 unique visitors a day.</p>
</td>
<td width="300">
<div class="homePageUtilLinks">
<a href="http://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss"
>Mailing List</a> <span class="sep">|</span> <a href="docs/CHANGES">Changes</a> <span class="sep">|</span> <a
href="http://sourceforge.net/cvs/?group_id=28961">CVS</a>
</div>
<div class="homePageQuotes">
<div class="quote">
<span class="quote">“I'm enamored with Cheetah”</span>
<div class="citation">
<cite>- <a
href="http://www.intertwingly.net/wiki/pie/SamRuby">Sam Ruby</a>,
senior member of IBM's Emerging Technologies Group & director of Apache Software Foundation</cite>
</div>
</div>
<div class="quote">
<span class="quote">“Give Cheetah a try. You won't regret
it. ... Cheetah is a truly powerful system. ... Cheetah is a serious
contender for the 'best of breed'”</span>
<div class="citation">
<cite>- <a
href="http://conferences.oreillynet.com/cs/os2005/view/e_spkr/1541">Alex
Martelli</a>, Google uber techie, core Python developer
& author of several popular Python books</cite>
</div>
</div>
</div>
<a class="quotesLink" href="praise.html">read more quotes</a>
</td>
</tr>
</table>
<div class="homePageDownloadBar">
<div class="homePageDownloadBarInner">
<b>Download</b> <a
href="http://github.com/rtyler/cheetah/tarball/v2.1.0">Cheetah CE v2.1.0</a>
(released on March 16, 2009: collection of bugfixes/improvements).
</div>
</div>
<p><b>Cheetah Community Edition</b>:</p>
<ul class="topLevel">
<li><b>is supported by every major Python web framework</b>.</li>
<li><b>is fully documented and is supported by an active user community</b>.</li>
<li>can output/generate <b>any</b> text-based format.</li>
<li>compiles templates into optimized, yet readable, Python code.</li>
<li>blends the power and flexibility of Python with a simple template language
that non-programmers can understand.
</li>
<li>gives template authors full access to any Python data structure, module,
function, object, or method in their templates. Meanwhile, it provides a way
for administrators to selectively restrict access to Python when needed.
</li>
<li>makes code reuse easy by providing an object-oriented interface to
templates that is accessible from Python code or other Cheetah
templates. One template can subclass another and selectively
reimplement sections of it. Cheetah templates can be subclasses
of <b>any</b> Python class and vice-versa.
</li>
<li>provides a simple, yet powerful, caching mechanism that can dramatically
improve the performance of a dynamic website.
</li>
<li>encourages clean separation of content, graphic design, and program
code. This leads to highly modular, flexible, and reusable site
architectures, shorter development time, and HTML and program code that is
easier to understand and maintain. It is particularly well suited for team
efforts. </li>
<li>can be used to generate static html via its command-line tool.</li>
</ul>
<h2>What is the philosophy behind Cheetah?</h2>
<p>Its design was guided by these principles:</p>
<ul class="topLevel">
<li>Python for the back end, Cheetah for the front end. Cheetah was
designed to complement Python, not replace it.
</li>
<li>Cheetah's core syntax should be easy for non-programmers to learn.
</li>
<li>Cheetah should make code reuse easy by providing an object-oriented
interface to templates that is accessible from Python code or other
Cheetah templates.
</li>
<li>Python objects, functions, and other data structures should be fully
accessible in Cheetah.
</li>
<li>Cheetah should provide flow control and error handling. Logic
that belongs in the front end shouldn't be relegated to the
back end simply because it's complex.
</li>
<li>It should be easy to <b>separate</b> content, graphic design, and program
code, but also easy to <b>integrate</b> them.
<p>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) is a third thing. 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 dreaded
"webmaster bottleneck"). </p>
<p>While it should be easy to develop content, graphics and program code
separately, it should be easy to integrate them together into a website. In
particular, it should be easy: </p>
<ul>
<li>for <b>programmers</b> to create reusable components and functions
that are accessible and understandable to designers.
</li>
<li>for <b>designers</b> to mark out placeholders for content and
dynamic components in their templates.
</li>
<li>for <b>designers</b> to soft-code aspects of their design that are
either repeated in several places or are subject to change.
</li>
<li>for <b>designers</b> to reuse and extend existing templates and thus
minimize duplication of effort and code.
</li>
<li>and, of course, for <b>content writers</b> to use the templates that
designers have created.</li>
</ul>
</li>
</ul>
<div class="attributionFooter"> Cheetah was created by Tavis
Rudd, a freelance programmer and designer, with <a
href="credits.html">contributions from many open source
volunteers</a>.<br/>Its documentation is edited by Mike Orr, who
also wrote its command line tool.</div> <img src="http://sourceforge.net/sflogo.php?group_id=28961&type=1"
width="0" height="0"
border="0" alt="SourceForge.net Logo" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="copyrightFooter" align="left">
Copyright © 2001-2009 Tavis Rudd. All rights reserved.
</div>
</div>
</body>
</html>
|