渲染模板及其变量IN webpy

时间:2014-12-23 06:54:57

标签: python web.py

我正在探索webpy并面临一个问题,我不知道如何解决这个问题。

根据文件。我发现这是渲染模板并将一个变量传递给模板的方法。

render = web.template.render('templates')
print render.hello('world')

我在我的演示appw中使用了相同的内容。

import web, sys, os
sys.path.append(os.path.abspath(os.path.dirname(__file__)))



urls = (
    '/', 'hello'
)
app = web.application(urls, globals())

class hello:        
    def GET(self):
        render = web.template.render('templates/')
        name = 'Bob'    
        return render.home(name)

if __name__ == "__main__":
    app.run()

但是每当我运行这段代码时,我都会遇到错误。

<type 'exceptions.TypeError'> at /
__template__() takes no arguments (1 given)

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

您可能错过$def with(name)

尝试将其用作home.html模板

$def with(name)
Hello $name

$def with()视为函数声明。您在$def with()中输入的任何参数都可以用作模板中的变量。因此,如果您有三个参数,那么该模板的渲染方法将需要三个参数,如普通函数。

示例模板:

$def with(name, todays_date, foods)

My name is $name

Today's date is $todays_date.date()

$for food in foods:
    $food

示例渲染调用:

return render.home('Bob', datetime.now(), ['apple', 'orange', 'banana'])

另外,Webpy模板有点难看,但你基本上可以使用python逻辑,比如循环和列表。您需要使用$来启动python代码。

以下是指向Webpy的模板文档的链接:http://webpy.org/docs/0.3/templetor

答案 1 :(得分:0)

只是一个平日, 如果有人使用$def with (args),它也不会工作...... with()

之间不应有空格