用于模板引擎的扭曲适配器
txTemplate的Python项目详细描述
txtemplate为一些流行的模板引擎提供适配器 使它们在twisted web中易于调用和使用。
txTemplate使用zope.interface提供一致的 每个模板引擎的加载程序和模板接口。
支持的模板引擎
- ClearSilver
- Genshi
- Jinja2
开始
- 在twisted中使用txtemplate真正需要做的是:
- 导入它
- 创建指向模板目录的加载程序
- 使用所述加载程序加载模板
- 调用template.render,将回调附加到呈现的延迟(如果需要)并返回twisted.web.resource.resource render方法的延迟。
下面是使用txtemplate的twisted web资源的代码示例 呈现一个可爱的genshi模板,在html中向大家问好:
import os from twisted.application import internet from twisted.internet import reactor from twisted.web import resource from twisted.web import server import txtemplate TEMPLATE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates") class HelloWorld(resource.Resource): def __init__(self): resource.Resource.__init__(self) self.loader = txtemplate.GenshiTemplateLoader(TEMPLATE_DIR) def getChild(self, name, request): return self def render_GET(self, request): template_name = "hello.xhtml" template = self.loader.load(template_name) context = {"greeting": "Hello", "greetee": "World"} def cb(content): request.write(content) request.setResponseCode(200) request.finish() d = template.render(**context) d.addCallback(cb) return server.NOT_DONE_YET site = server.Site(HelloWorld()) reactor.listenTCP(8888, site) reactor.run()
这个例子包含在txtemplate/examples/txweb.py和 root.xhtml模板位于txtemplate/examples/templates/root.xhtml中。