Our first template follows a long noble tradition in computer tutorials. It produces a familiar, friendly greeting. Here's the template:
Hello, world!
... the output:
Hello, world!
... and the .py template module cheetah-compile produced, with line numbers added:
1 #!/usr/bin/env python
2 """
3 Autogenerated by CHEETAH: The Python-Powered Template Engine
4 CHEETAH VERSION: 0.9.12
5 Generation time: Sat Apr 20 14:27:47 2002
6 Source file: x.tmpl
7 Source file last modified: Wed Apr 17 22:10:59 2002
8 """
9 __CHEETAH_genTime__ = 'Sat Apr 20 14:27:47 2002'
10 __CHEETAH_src__ = 'x.tmpl'
11 __CHEETAH_version__ = '0.9.12'
12 ##################################################
13 ## DEPENDENCIES
14 import sys
15 import os
16 import os.path
17 from os.path import getmtime, exists
18 import time
19 import types
20 from Cheetah.Template import Template
21 from Cheetah.DummyTransaction import DummyTransaction
22 from Cheetah.NameMapper import NotFound, valueForName,
valueFromSearchList
23 import Cheetah.Filters as Filters
24 import Cheetah.ErrorCatchers as ErrorCatchers
25 ##################################################
26 ## MODULE CONSTANTS
27 try:
28 True, False
29 except NameError:
30 True, False = (1==1), (1==0)
31 ##################################################
32 ## CLASSES
33 class x(Template):
34 """
35
36 Autogenerated by CHEETAH: The Python-Powered Template Engine
37 """
38 ##################################################
39 ## GENERATED METHODS
40 def __init__(self, *args, **KWs):
41 """
42
43 """
44 Template.__init__(self, *args, **KWs)
45 self._filePath = 'x.tmpl'
46 self._fileMtime = 1019106659
47 def respond(self,
48 trans=None,
49 dummyTrans=False,
50 VFS=valueFromSearchList,
51 VFN=valueForName,
52 getmtime=getmtime,
53 currentTime=time.time):
54 """
55 This is the main method generated by Cheetah
56 """
57 if not trans:
58 trans = DummyTransaction()
59 dummyTrans = True
60 write = trans.response().write
61 SL = self._searchList
62 filter = self._currentFilter
63 globalSetVars = self._globalSetVars
64
65 ########################################
66 ## START - generated method body
67
68 if exists(self._filePath) and getmtime(self._filePath) > \
self._fileMtime:
69 self.compile(file=self._filePath)
70 write(getattr(self, self._mainCheetahMethod_for_x)
(trans=trans))
71 if dummyTrans:
72 return trans.response().getvalue()
73 else:
74 return ""
75 write('Hello, world!\n')
76
77 ########################################
78 ## END - generated method body
79
80 if dummyTrans:
81 return trans.response().getvalue()
82 else:
83 return ""
84
85 ##################################################
86 ## GENERATED ATTRIBUTES
87 __str__ = respond
88 _mainCheetahMethod_for_x= 'respond'
89 # CHEETAH was developed by Tavis Rudd, Chuck Esterbrook, Ian Bicking
# and Mike Orr;
90 # with code, advice and input from many other volunteers.
91 # For more information visit http://www.CheetahTemplate.org
92 ##################################################
93 ## if run from command line:
94 if __name__ == '__main__':
95 x().runAsMainProgram()
(I added the line numbers for this Guide, and split a few lines to fit the page width. The continuation lines don't have line numbers, and I added indentation, backslashes and '#' as necessary to make the result a valid Python program.)
The examples were generated from CVS versions of Cheetah between 0.9.12 and 0.9.14.