淺析Python的web.py框架中url的設(shè)定方法
網(wǎng)頁(yè)中的數(shù)據(jù)在傳遞的時(shí)候有GET和POST兩種方式,GET是以網(wǎng)址的形式傳參數(shù),在web.py中有著很好的匹配,如果我們配置以下的urls
urls =( '/','index', '/weixin/(.*?)','WeixinInterface' )
先不考慮/weixin/后面的東西,現(xiàn)在我們來(lái)寫(xiě)index的類
class index:
def GET(self):
i = web.input(name = 'kevinkelin',age = 100)
return render.index(i.name,i.age)
隨便寫(xiě)一個(gè)index.html模板文件
$def with(name,age) $if name: I just want to say <em>hello</em> to $name, he is $age years old $else: <em>hello</em>,world!
當(dāng)訪問(wèn)http://127.0.0.1:8080/ 此時(shí)沒(méi)有傳遞name與age的值,由于我的GET函數(shù)里定義了默認(rèn)的name與age的值,所以程序會(huì)將kevinkelin與26傳遞到模板中去得到以下的輸出
I just want to say hello to kevinkelin, he is 100 years old
當(dāng)訪問(wèn)http://127.0.0.1:8080/?name=yyx&age=26 即向GET函數(shù)中傳遞name = yyx and age = 26的時(shí)候得到以下的輸出
I just want to say hello to yyx, he is 26 years old
我們也可以不定義默認(rèn)的的參數(shù),即定義為空
i = web.input(name = None,age = None)
當(dāng)訪問(wèn)http://127.0.0.1:8080/ 的時(shí)候?qū)?huì)得到 hello,world!的輸出即模板中的else
但是如果你不定義name和age將會(huì)出錯(cuò)
i = web.input()
這是因?yàn)楹竺婺銓.name與i.age分配到模板當(dāng)中去,但是全局變量里又沒(méi)有這兩個(gè)變量,所以會(huì)報(bào)錯(cuò)
但有時(shí)我們想這樣傳遞參數(shù),不想加那個(gè)“?”這時(shí)我們得要更改urls規(guī)則
urls =( '/name=(.*)&age=(.*)','index', '/weixin/(.*?)','WeixinInterface' )
重新寫(xiě)class index
class index:
def GET(self,name,age):
return render.index(name,age)
這里是將url的參數(shù)通過(guò)正則匹配然后傳遞到index類中的GET的參數(shù)中
當(dāng)訪問(wèn)http://127.0.0.1:8080/name=yyx&age=26 時(shí)將得到
I just want to say hello to yyx, he is 26 years old
第二種方法看似簡(jiǎn)單,但其實(shí)不好控制,要求寫(xiě)的正則工作量加大了
如果我想知道到底有多少參數(shù)通過(guò)GET方式傳遞過(guò)來(lái),我可以直接return 來(lái)看一下到底有哪些傳遞過(guò)來(lái)了
接下來(lái)看一下post來(lái)的數(shù)據(jù):
我們可以制作一個(gè)簡(jiǎn)單的表單或者直接使用fiddler來(lái)構(gòu)造數(shù)據(jù)進(jìn)行POST傳值
def POST(self):
data = web.data()
return data

我想看一下得到的數(shù)據(jù)類型
return type(data)
得到的是<type 'str'>,也就是說(shuō)web.py已經(jīng)將post的數(shù)據(jù)轉(zhuǎn)換成了str類型
那么我來(lái)試一下傳遞xml
<xml> <ToUserName>yanxingyang</ToUserName> <FromUserName>study_python</FromUserName> <CreateTime>123456</CreateTime> <MsgType>text</MsgType> <Content>Just a test</Content> </xml>
其實(shí)這個(gè)微信的XML格式做了一些更改,我來(lái)試著使用lxml對(duì)它進(jìn)行解析
from lxml import etree data = web.data() xml = etree.fromstring(data) content = xml.find(‘Content').text return content
得到的結(jié)果很好

- python?web.py啟動(dòng)https端口的方式
- python3.x中安裝web.py步驟方法
- python web.py開(kāi)發(fā)httpserver解決跨域問(wèn)題實(shí)例解析
- Linux系統(tǒng)上Nginx+Python的web.py與Django框架環(huán)境
- 詳細(xì)解讀Python的web.py框架下的application.py模塊
- 使用Python的web.py框架實(shí)現(xiàn)類似Django的ORM查詢的教程
- 安裝Python的web.py框架并從hello world開(kāi)始編程
- Python開(kāi)發(fā)WebService系列教程之REST,web.py,eurasia,Django
- python web.py服務(wù)器與客戶端的實(shí)現(xiàn)示例
相關(guān)文章
tensorflow: 查看 tensor詳細(xì)數(shù)值方法
今天小編就為大家分享一篇tensorflow: 查看 tensor詳細(xì)數(shù)值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
python中shell執(zhí)行知識(shí)點(diǎn)
在本篇文章里小編給大家分享的是關(guān)于python中shell執(zhí)行知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-05-05
Python版本與package版本兼容性檢查方法總結(jié)
這篇文章主要介紹了Python版本與package版本兼容性檢查方法的相關(guān)資料,文中提供四種檢查方法,分別是pip查詢、conda管理、PyPI官網(wǎng)確認(rèn)、腳本自動(dòng)檢測(cè),通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-09-09
Python?web框架實(shí)現(xiàn)增加BasicAuth認(rèn)證詳解
這篇文章主要為大家詳細(xì)介紹了Python如何在web框架中實(shí)現(xiàn)增加BasicAuth認(rèn)證,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-05-05
使用Python?Turtle庫(kù)帶你玩轉(zhuǎn)創(chuàng)意繪圖(畫(huà)個(gè)心,寫(xiě)個(gè)花)
Python的turtle庫(kù)提供了一種有趣且易于上手的編程繪圖方式,適合初學(xué)者學(xué)習(xí),通過(guò)本文的介紹,你將了解到如何進(jìn)行畫(huà)布設(shè)置、畫(huà)筆屬性的調(diào)整、畫(huà)筆的移動(dòng)與控制,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
用python3讀取python2的pickle數(shù)據(jù)方式
今天小編就為大家分享一篇用python3讀取python2的pickle數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12

