我正在探索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)
请帮我解决这个问题。
答案 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
和()