web.py 模板

2022-04-24 18:21 更新

在 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。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)