猎豹预编译模板用法

时间:2010-03-31 03:30:13

标签: python templates cheetah

出于性能原因{@ 3}},我正在研究如何使用预编译模板。

我在模板目录中编辑hello.tmpl

#attr title = "This is my Template"
<html>
    <head>
        <title>\${title}</title>
    </head>
    <body>
        Hello \${who}!
    </body>
</html>

然后发出cheetah-compile.exe .\hello.tmpl并获取hello.py

在另一个python文件runner.py中,我有:

#!/usr/bin/env python

from Cheetah.Template import Template
from template import hello
def myMethod():
    tmpl = hello.hello(searchList=[{'who' : 'world'}])
    results = tmpl.respond()
    print tmpl


if __name__ == '__main__':
    myMethod()

但结果是

<html>
    <head>
        <title>${title}</title>
    </head>
    <body>
        Hello ${who}!
    </body>
</html>

调试一段时间后,我发现在hello.py内:

def respond(self, trans=None):



    ## CHEETAH: main method generated for this template
    if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)):
        trans = self.transaction # is None unless self.awake() was called
    if not trans:
        trans = DummyTransaction()

看起来trans是None,所以它转到DummyTransaction,我在这里想念的是什么? 有关如何修复它的任何建议吗?

1 个答案:

答案 0 :(得分:0)

你的主要问题是在myMethod()内的runner.py而不是

print tmpl

你需要

print results

此外,您的代码存在一些格式问题:

  1. 不要使用反斜杠
  2. 转义$ {title}
  3. 您需要if __name__ == '__main__':而不是if name == 'main':