使用 webpy 的 Jinja TemplateNotFound 错误

Jinja TemplateNotFound error using webpy

我有一个处理程序 class 和一个主要程序 class。并且处理程序查找 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")

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()