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.