2

我刚开始玩cherrypy,想用cheetah作为模板引擎。

因此我想创建一个工具,这样我就可以使用注释功能指向我的模板

就像是

import cherrypy


class Root(object):
    @cherrypy.expose()
    @cherrypy.tools.cheetah(template="index")
    def index(self):
        title = "Demo"
        content = "Stuff"
        return {'title': title, 'content': content}

我已经在cherrypywiki上找到了可以使用编译模板的东西:

CherryPy Cheeta 工具

但我不想先编译模板。我想从我暴露的网站返回我的内容。我的 cheetah 工具现在应该拦截该内容并创建模板

我知道如何创建模板:

from Cheetah.Template import Template
....
 cherrypy.expose()
 def demo(self):
    filename = os.path.join(APPDIR, "index.tmpl")
    template = Template(file = filename)

    template.content = "bla"
    template.title = "Test"
    return str(template)
 ....

现在基本上在我的页面处理程序中,我只返回我的内容字典,我的工具创建模板并动态填充属性。因为我也是 Python 的新手,所以我不知道如何动态地做到这一点。

我希望我可以遍历我的字典并在我的工具中做类似的事情:

template = Template(file = filename)
for key, value in data:
    setattr(template, key, value)

但我已经通过一个简短的演示尝试了这个。setattr不管用。我试过这样:

template = Template(file = filename)
for key, value in data:
    setattr(template, 'title', 'Test')

有人可以指出我正确的方向吗?

4

0 回答 0