from WebKit.Page import Page from Cheetah.Template import Template import threading debug = True class SafeCheetah(Page): def __init__(self): Page.__init__(self) self.__safe = threading.local() self.tmpl_file = 'MyTemplate.tmpl' def awake(self, trans): Page.awake(self, trans) current_thread = threading.currentThread() try: # If you compiled cheetah file, you can import pure Python code here import MyTemplate self.__safe.tmpl = MyTemplate() except ImportError: # otherwise you have to parse the template file print "I have to parse template %s" % self.tmpl_file try: self.__safe.tmpl if debug: print "The thread %s is already filled, cool!\n" % current_thread except AttributeError: if debug: print "I have to parse template for thread %s\n" % current_thread self.__safe.tmpl = Template(file='default/'+self.tmpl_file) # I can fill my template with some values self.__safe.tmpl.title = "Logo" self.__safe.tmpl.image = "ruby.jpg" def writeHTML(self): self.write(self.__safe.tmpl.respond()) # Contents of MyTemplate.tmpl: $title