2014-12-23 101 views
0

我正在探索webpy並面臨一個問題,我不知道如何解決這個問題。渲染模板及其變量在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

如果您不使用變量,它會工作嗎?另外你的「家」模板是什麼樣的? – Gohn67

回答

1

你可能缺少$def with(name)

嘗試使用此爲您home.html模板$def with()

$def with(name) 
Hello $name 

覺得作爲一個函數聲明。無論您在$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

+0

感謝Gohn,但你能解釋爲什麼它顯示。 – burning

+0

@burning我添加了一些額外的信息。我希望它有幫助。 – Gohn67

0

只是一個平視, 如果有人使用$def with (args),它不會工作,要麼... 沒有空格應該是with之間的中間和()