Suppose you have a dynamic website using turbogears, and you want to publish part of the content of this dynamic site to a static website, for instance to garanty its perenity. Well turbogears makes it really hard for you to do this. On the mailing lists they pretty much advise you to create a webserver and crawl it. Ugly. So here is the code required to render the kid templates that you have been using with turbogears to an html string (consider this as a brain dump, so that Google picks this up, hopefuly to help somebody not to loose a day like I did):
# First set up the environment you need for your webapp: import turbogears turbogears.update_config(configfile="dev.cfg", modulename="sanum.config") from itertools import izip import turbogears.view turbogears.view.load_engines() import turbogears.util as tg_util from turbogears.widgets import js_location engine = turbogears.view.engines.get('kid') def render_static(data_dict, template): """ Render a given template + its data dictionnary to a static html. """ data_dict['tg_css'] = tg_util.setlike() data_dict['tg_flash'] = False js = dict(izip(js_location, iter(tg_util.setlike, None))) for l in iter(js_location): data_dict["tg_js_%s" % str(l)] = js[l] return engine.render(data_dict, template=template)
You can call this function with data_dict being a dictionary as returned by your controller methods, and template the path to your template, as in the expose decorator.