久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Python實戰(zhàn)【第二節(jié)】在網(wǎng)頁上顯示信息

歡迎大家來到Python自學教程實戰(zhàn)篇,上一講我們跟大家聊了聊我們本次實戰(zhàn)的主題和目的,并且給大家了一串代碼讓大家試驗一下,不知道大家都有沒有做呢?這節(jié)課我們就先來解釋下昨天文章中的那串代碼:

import web

導入 web.py 模塊。

urls = (

'/', 'index'

)

這是指定網(wǎng)站 url 的匹配規(guī)則,左邊是正則表達式,右邊是對應處理函數(shù)的名稱。

class index:

def GET(self):

return "Hello, world!"

這便是處理請求的函數(shù) index。GET 和 POST 是 HTTP 的兩種請求方式,一般來說,GET 用于請求網(wǎng)頁,而 POST 多用于提交表單。舉個不嚴謹?shù)睦踝樱寒斈阍跒g覽器地址欄中輸入一個地址并按下回車,就是發(fā)送了一個 GET 請求;而當你在打開的頁面中輸入用戶名和密碼,點擊登錄按鈕,則是發(fā)送了一個 POST 請求。這里的 GET 函數(shù)描述了對于一個 GET 請求的處理方式:直接返回一個字符串。

if __name__ == "__main__":

app = web.application(urls, globals())

app.run()

最后,當這個代碼文件被執(zhí)行時,我們將創(chuàng)建一個 application,它會按照我們定義的 url 規(guī)則進行對應的處理,并在后臺一直運行,獨自等待請求的到來。

插一句:由于這個系列的文章側(cè)重于“實戰(zhàn)”,所以我只會搬開擋在道路正前方的石頭,對于涉及的諸多細節(jié)無法面面俱到。即使這段簡單的 hello world 代碼中,關(guān)于 url 的正則匹配、GET / POST 的區(qū)別等,都可說上很多。但現(xiàn)在我只能略過。如有疑問,歡迎在QQ群和論壇上討論。

僅僅在頁面上顯示 hello world 顯然不能滿足我的需求。我是想要一個關(guān)于電影的網(wǎng)站,那最起碼得在頁面上顯示一些電影的信息吧。

一種顯而易見的方法是,把要顯示的信息拼成字符串,然后返回。

在代碼里定義一組數(shù)據(jù),一個由 dict 組成的 list:

movies = [

{

'title': 'Forrest Gump',

'year': 1994,

},

{

'title': 'Titanic',

'year': 1997,

},

]

然后把 GET 方法改為:

def GET(self):

page = ''

for m in movies:

page += '%s (%d)\n' % (m['title'], m['year'])

return page

movies 是一個包含了影片標題和年代信息的 list。在 GET 方法中,把 movies 里每一條內(nèi)容取出來,拼接成一整個字符串,作為結(jié)果返回。

如果你之前已經(jīng)運行了 code.py,刷新頁面將會看到新的內(nèi)容:

Forrest Gump (1994)

Titanic (1997)

是不是有點類似在命令行輸出結(jié)果或者在文本文件中存儲內(nèi)容?但作為一個網(wǎng)頁,如果以后要添加更多的顯示效果和交互功能,這樣寫肯定是要跪。好在 web.py 給我們提供了一種更方便的頁面展示方式 -- 模板。

剛才我們用的方法類似于在 Python 里寫 HTML,這是比較痛苦的。而 web.py 的模板是讓你能在 HTML 里寫 Python。

首先我們需要在代碼里指定模板:

render = web.template.render('templates/')

在 GET 方法里調(diào)用模板:

def GET(self):

return render.index()

模板的返回值就是一個處理好的頁面,所以直接 return 就可以了。

然后在項目文件夾,也就是 code.py 所在的目錄下新建一個叫做 templates 的目錄,里面新建一個 index.html 文件作為模板。注意這里的 templates、index 命名都需要與你代碼里的設定一致。如果你是吧一個 muban 文件夾下的 shouye.html 作為模板,那相應代碼就應改為:

render = web.template.render('muban/')

render.shouye()

在模板 index.html 里寫下:

<h1>Crossin's Movie Site</h1>

h1 是 HTML 中表示標題的標簽。保存 code.py 和 index.html 后刷新頁面,你將會看到一行很大的標題:

Crossin's Movie Site

這表示模板已經(jīng)生效了。但 movies 的信息仍然沒有顯示。如果需要在模板中顯示信息,需要將信息傳遞給模板:

def GET(self):

return render.index(movies)

然后在模板里,接收并使用傳遞進來的參數(shù):

$def with (movies)

<h1>Crossin's Movie Site</h1>

$movies

web.py 模板中的 $def with 表示這個模板中將要使用的變量。注意務必把它放在模板的第一行。如果有多個參數(shù),需要全部依次列在括號中。

$movies 則表示獲取 movies 變量的值。

保存刷新,頁面上已經(jīng)可以看到我們在代碼中定義的 movies 信息了,但還是 list 直接轉(zhuǎn)換字符串的效果。

更近一步地,我們可以在模板中對數(shù)據(jù)進行操作,讓它們看起來更順眼一點:

$for movie in movies:

<li>

$movie['title'], $movie['year']

</li>

模板中的語法和 Python 類似,只是前面需要增加 $ 符號。縮進依然需要按照 Python 中的規(guī)范。li 是 HTML 中列表的標簽。

這時候,頁面上已經(jīng)就能以列表的形式顯示電影信息了。盡管依然簡陋,但一切才剛剛開始,我們的征途是星辰大海。

恭喜您在Python自學的道路上又堅持了一天,我們目前學習的知識比之前的要復雜一些,但是也比之前的有趣多了,所以希望大家跟上我們的步伐,繼續(xù)加油!

好啦,今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會有大量優(yōu)質(zhì)內(nèi)容與大家分享!

聲明:文章來源于網(wǎng)絡,侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡安全、云原生、Go、Python開發(fā)專業(yè)人才培訓機構(gòu)!

    1. 主站蜘蛛池模板: 策勒县| 日照市| 东明县| 宜良县| 镇安县| 开江县| 黎城县| 迁西县| 灯塔市| 兴海县| 子长县| 犍为县| 中方县| 保德县| 宣恩县| 黄浦区| 镇原县| 怀宁县| 辽宁省| 大同市| 衢州市| 彭水| 林口县| 理塘县| 两当县| 宜兰市| 濉溪县| 南昌市| 文昌市| 通江县| 美姑县| 秭归县| 交城县| 延边| 安西县| 沈阳市| 敦化市| 辛集市| 明溪县| 电白县| 台山市|