使用webpy

时间:2017-02-28 16:37:42

标签: python jinja2 web.py

我有一个处理程序类和一个主类。并且处理程序查找t.html而不是查找hello.html。当我打印t值时,我得到hello,当我在模板文件夹中插入t.html文件时就可以了。 此行render.t(params)似乎存在一些问题。

class Handler():
    def write(self, string):
        return string

    def render_str(self, template, **params):
        t = template
        print t # prints correclt -> hello
        return render.t(params) # Looks for t.html instead of hello.html

    def render(self, template, **kw):
        print template
        return self.write(self.render_str(template, **kw))

class MainPage(Handler):
    def GET(self):

        return self.render("hello")

1 个答案:

答案 0 :(得分:0)

render.t与名为t的单独变量无关。它与render['t']更相似,但您想要render[t]

这取决于您render的定义方式(代码中未显示)。您可以对其进行子类化并添加__getitem__方法,该方法只需调用__getattr__

例如,使用web.py模板渲染(而不是jinja)

class my_render(web.template.render):
    def __getitem__(self, name):
        return self.__getattr__(name)

>>> render['t']() == render.t()
>>> t = 'home.html'
>>> render[t]() == render.home()