首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cheetah预编译模板使用

Cheetah预编译模板使用
EN

Stack Overflow用户
提问于 2010-03-31 11:30:13
回答 1查看 382关注 0票数 0

由于here建议的性能原因,我正在研究如何使用预编译的模板。

我将模板目录中的hello.tmpl编辑为

代码语言:javascript
复制
#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中,我有:

代码语言:javascript
复制
#!/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()

但结果是

代码语言:javascript
复制
<html>
    <head>
        <title>${title}</title>
    </head>
    <body>
        Hello ${who}!
    </body>
</html>

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

代码语言:javascript
复制
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,我这里漏掉了什么?对如何修复有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2010-04-01 07:45:07

您的主要问题是在myMethod()内部的runner.py中,而不是

代码语言:javascript
复制
print tmpl

你需要

代码语言:javascript
复制
print results

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

标题不要用反斜杠来转义${

  1. }

标题您需要if __name__ == '__main__':而不是if name == 'main':

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2550323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档