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
二拿霉、熟悉基本使用規(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 = "name"
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/'))