在 Python 中寫 HTML 不是聰明的選擇,相反在 HTML 中寫 Python 則有趣的多。幸運(yùn)的是,web.py 讓這件事情做得簡(jiǎn)單而又漂亮。
注意: 老版本的 web.py 使用 Cheetah 模板系統(tǒng),你可以也歡迎使用其他模板系統(tǒng),但它可能不會(huì)被長(zhǎng)久支持。
給模板新建一個(gè)目錄(命名為 templates),在該目錄下新建一個(gè)以 .html 結(jié)尾的文件,內(nèi)容如下:
<em>Hello</em>, world!
你也可以在模板中使用 web.py 模板支持代碼:
$def with (name)
$if name:
I just wanted to say <em>hello</em> to $name.
$else:
<em>Hello</em>, world!
如上,該模板看起來就像 python 文件一樣,除了頂部的 def with (表示從模板將從這后面取值)和總是位于代碼段之前的$。當(dāng)前,template.py 首先請(qǐng)求模板文件的首行 $def 。當(dāng)然,你要注意 web.py 將會(huì)轉(zhuǎn)義任何任何用到的變量,所以當(dāng)你將 name 的值設(shè)為是一段 HTML 時(shí),它會(huì)被轉(zhuǎn)義顯示成純文本。如果要關(guān)閉該選項(xiàng),可以寫成 $:name 來代替 $name。
回看再看 code.py。在第一行之下添加:
render = web.template.render('templates/')
這會(huì)告訴web.py到你的模板目錄中去查找模板。然后把 index.GET改成: 告訴 web.py 在你的模板目錄下查找模板文件。修改 index.GET :
name = 'Bob'
return render.index(name)
(’index’ 是模板的名字,’name’ 是傳入模板的一個(gè)參數(shù))
訪問站點(diǎn)它將顯示 hello Bob。
但是如果我們想讓用戶自行輸入他的名字,么辦?如下:
i = web.input(name=None)
return render.index(i.name)
訪問 / 將顯示 hello world,訪問 /?name=Joe 將顯示 hello Joe。
URL 的后面的 ? 看起來不好看?修改下 URL 配置:
'/(.*)', 'index'
然后修改下 index.GET:
def GET(self, name):
return render.index(name)
現(xiàn)在訪問 /Joe 看看,它會(huì)顯示 hello Joe。
更多建議: