[web.py-1]初識(shí)web.py及簡(jiǎn)單使用

web.py是輕量級(jí)的web框架,用來入門web開發(fā)。

一、安裝

1窖维、安裝web.py

方法一:直接使用pip安裝榆综,python -m pip install web.py

此方法我自己沒有安裝成功,提示需要import一些包铸史,可能是有些包沒有下載下來鼻疮。

方法二:官網(wǎng)(https://github.com/webpy/webpy)下載zip包,解壓后琳轿,進(jìn)入解壓目錄下判沟,輸入 python setup.py install

2、測(cè)試安裝成功利赋。

命令行下運(yùn)行 import web 無錯(cuò)誤提示即可。

3猩系、官網(wǎng)(http://webpy.org/)可以查看教程媚送,查看入門的例子。

    import web
    
    urls = (
        '/(.*)', 'hello'
    )
    app = web.application(urls, globals())

    class hello:        
        def GET(self, name):
            if not name: 
                name = 'World'
            return 'Hello, ' + name + '!'

    if __name__ == "__main__":
        app.run()

4寇甸、運(yùn)行入門的例子塘偎,順便驗(yàn)證環(huán)境安裝完畢。

python code.py

訪問:http://localhost:8080/

二拿霉、熟悉基本使用規(guī)則

1吟秩、在官網(wǎng)(http://webpy.org/docs/0.3/api)可以了解到web.py的api

2、研究例子文件绽淘,了解Python之 %s %d %f的用法涵防,很實(shí)用。

3沪铭、修改默認(rèn)端口

在啟動(dòng)服務(wù)器的時(shí)候壮池,如果你不想使用默認(rèn)端口,你可以使用這樣的命令來指定端口號(hào): python code.py 8888杀怠。

4椰憋、調(diào)試

直接添加一行 web.internalerror = web.debugerror 即可。

5赔退、使用模板創(chuàng)建網(wǎng)頁 (http://webpy.org/docs/0.3/templetor.zh-cn

例子:

    import web

    render = web.template.frender('C:\\Users\\yanjx\\Desktop\\templates\\index.html')

    urls = (

        '/', 'index'

    )

    class index:

        def GET(self):

            name='Bob'

            return render(name)

    if __name__ == "__main__":

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

        app.run()

方法一:用render方法橙依,從文件夾下匹配模板文件
render = web.template.render('../templates/')
調(diào)用模板 return render.index(movies) #index代表templates文件夾下的index.html文件

方法二:用frender方法,直接定位到模板文件
render = web.template.frender('templates/hello.html') render index('world')

方法三:用Template方法:直接用字符串定義模板
template = "def with (name)\nHelloname"
index= web.template.Template(template)
return index('world')

6硕旗、模板文件的編寫

1窗骑、render=web.template.render(“templates”)表示創(chuàng)建一個(gè)模板對(duì)象,模板是存放于templates目錄下漆枚,然后就可以用所創(chuàng)建的 render 對(duì)象來訪問相應(yīng)的模板
2慧域、templates目錄下的index.html就是用render.index來表示(實(shí)際上是匹配尋找index.*文件,第一個(gè)匹配的就認(rèn)為是所對(duì)應(yīng)的模板文件)浪读,如果templates下還有個(gè)a目錄昔榴,a目錄下有個(gè)pagea.html辛藻,那么訪問這個(gè)pagea模板就要用render.a.pagea的形式
3、在index.html第一行 $def with (name)表示本模板接受一個(gè)名為name的參數(shù)
4互订、頁面接收的參數(shù)可以多于一個(gè)吱肌,也可以沒有,如果不需要參數(shù)仰禽,則就不需要$def with (name)這樣的代碼氮墨,刪除掉這一句,同時(shí)修改模板中對(duì)name變量的引用吐葵,修改index類最后一句為return render.index()就可以了规揪。
5、如果有參數(shù)温峭,那么模板的第一行代碼就必須是這個(gè) $def with (…)猛铅,可以多于一個(gè)參數(shù),比如是這樣$def with (gname, fname)
6凤藏、模板接受的這個(gè)參數(shù)也可以是一個(gè)元組奸忽,比如像下面這樣:return render.index((“Lisa”,”Hayes”)),在模板中可以如下以元組方式訪問參數(shù)數(shù)據(jù):Hi, $name[0] $name[1]
7揖庄、使用到$符號(hào)表明這不是文本而是模板代碼栗菜。也就是每當(dāng)用到程序代碼、對(duì)象的時(shí)候就必須用$來與html代碼和頁面顯示文本相區(qū)別
8蹄梢、向?qū)ο筚x值時(shí)需要在$與對(duì)象名之間留空格
    $ vara = “apple”
9疙筹、引用對(duì)象的時(shí)候直接使用 $+對(duì)象名的形式,如$vara禁炒。
    $varb = 1  
    $varc = 2  
    用$varb+$varc的形式腌歉,頁面上只會(huì)得到1+2而不是3,這時(shí)也就需要把兩個(gè)對(duì)象放在括號(hào)里齐苛,如$(varb+varc)的形式才能得到正確答案3
10翘盖、對(duì)象賦值語句必須獨(dú)占一行,前面或后面有其他代碼則會(huì)程序出錯(cuò)
11凹蜂、單行注釋馍驯,以$#符號(hào)開始到行末都是注釋內(nèi)容。
    如:$#This is comment

12玛痊、模板內(nèi)置for循環(huán)的變量
    loop.index: 循環(huán)次數(shù)計(jì)數(shù) (1-開始)
    loop.index0: 循環(huán)次數(shù)計(jì)數(shù)(0-開始)
    loop.first: 如果是第一次循環(huán)則為True
    loop.last: 如果是最后一次循環(huán)則為True
    loop.odd: 如果是第奇數(shù)次循環(huán)則為True
    loop.even: 如果是第偶數(shù)次循環(huán)則為True
    loop.parity: 如果循環(huán)次數(shù)為奇數(shù)值為“odd” 汰瘫,反之為 “even”
    loop.parent: 本循環(huán)的外層循環(huán)對(duì)象
    例:$for a in ["a", "b", "c", "d"]:   
        $loop.index,$loop.index0,$loop.first,$loop.last,$loop.odd,$loop.even,$loop.parity<br/> 
    輸出:
        1,0,True,False,True,False,odd  
        2,1,False,False,False,True,even  
        3,2,False,False,True,False,odd  
        4,3,False,True,False,True,even 

13、在模板中擂煞,用戶可以直接使用python的內(nèi)建函數(shù)和變量
14混弥、非內(nèi)建功能,要在創(chuàng)建render的時(shí)候顯式指定所需要的功能函數(shù)
    globals = {'markdown': markdown.markdown}  
    render =web.template.render('templates', globals=globals)  
15、模板復(fù)用
    render=web.template.render("templates",base="layout")  
    return render.index("Lisa", "Hayes")  
    這個(gè)layout表示要以templates下的layout.html模板為通用模板框架蝗拿,具體使用晾捏,等用到了再百度吧,就是鑲嵌模板看起來用著很方便哀托。
16惦辛、在web.py模板中使用jQuery
    在jQuery中$也是一個(gè)關(guān)鍵字,這樣的話如果在模板中使用jQuery就會(huì)沖突仓手,這時(shí)候只需要用$做一下轉(zhuǎn)義就可以了

轉(zhuǎn)載自https://blog.csdn.net/qq_22194315/article/details/79114533等胖齐,感謝作者分享

三、運(yùn)行時(shí)遇到的問題

問題1:執(zhí)行時(shí)提示inconsistent use of tabs and spaces in indentation

原因:這個(gè)報(bào)錯(cuò)就是混用了tab和4個(gè)空格造成的
解決方法:檢查代碼嗽冒,要不全部用tab呀伙,要不全部用4個(gè)空格,或者用idle編輯器校正

問題2:引用模板時(shí)提示No template named index

問題原因:就是路徑錯(cuò)了找不到添坊,要熟悉一下文件路徑的使用
解決方法:我用第一種方法可以成功剿另,后兩種方法沒有成功
1)絕對(duì)路徑
render = web.template.render('C:\Users\yanjx\Desktop\templates')
render = web.template.render('C:/Users/yanjx/Desktop/templates')
2)相對(duì)路徑
render = web.template.render('../templates/')
3)另辟蹊徑
root = os.path.dirname(file)
render = web.template.render(os.path.join(root, '..', 'templates/'))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帅腌,隨后出現(xiàn)的幾起案子驰弄,更是在濱河造成了極大的恐慌麻汰,老刑警劉巖速客,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異五鲫,居然都是意外死亡溺职,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門位喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浪耘,“玉大人,你說我怎么就攤上這事塑崖∑叱澹” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵规婆,是天一觀的道長(zhǎng)澜躺。 經(jīng)常有香客問我,道長(zhǎng)抒蚜,這世上最難降的妖魔是什么掘鄙? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮嗡髓,結(jié)果婚禮上操漠,老公的妹妹穿的比我還像新娘。我一直安慰自己饿这,他們只是感情好浊伙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布撞秋。 她就那樣靜靜地躺著,像睡著了一般吧黄。 火紅的嫁衣襯著肌膚如雪部服。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天拗慨,我揣著相機(jī)與錄音廓八,去河邊找鬼。 笑死赵抢,一個(gè)胖子當(dāng)著我的面吹牛剧蹂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烦却,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宠叼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了其爵?” 一聲冷哼從身側(cè)響起冒冬,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摩渺,沒想到半個(gè)月后简烤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摇幻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年横侦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绰姻。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枉侧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狂芋,到底是詐尸還是另有隱情榨馁,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布帜矾,位于F島的核電站翼虫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏黍特。R本人自食惡果不足惜蛙讥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灭衷。 院中可真熱鬧次慢,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闻妓,卻和暖如春菌羽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背由缆。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工注祖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人均唉。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓是晨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親舔箭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罩缴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,180評(píng)論 22 257
  • 模板標(biāo)簽除了幾個(gè)常用的层扶,還真心沒有仔細(xì)了解一下箫章,看到2.0發(fā)布后,翻譯學(xué)習(xí)一下镜会。 本文盡量忠實(shí)原著檬寂,畢竟大神的東西...
    海明_fd17閱讀 2,003評(píng)論 0 5
  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,270評(píng)論 2 3
  • 在 Python 中寫 HTML 不是聰明的選擇,相反在 HTML 中寫 Python 則有趣的多稚叹。幸運(yùn)的是焰薄,we...
    hxzqlh閱讀 8,165評(píng)論 1 18
  • Web.py 一拿诸、Templetor模板對(duì)象 (1)模板系統(tǒng)使用方式 在工程同級(jí)目錄下創(chuàng)建templates文件夾...
    凜0_0閱讀 673評(píng)論 0 0