淺析Python的web.py框架中url的設(shè)定方法
網(wǎng)頁中的數(shù)據(jù)在傳遞的時(shí)候有GET和POST兩種方式,GET是以網(wǎng)址的形式傳參數(shù),在web.py中有著很好的匹配,如果我們配置以下的urls
urls =( '/','index', '/weixin/(.*?)','WeixinInterface' )
先不考慮/weixin/后面的東西,現(xiàn)在我們來寫index的類
class index: def GET(self): i = web.input(name = 'kevinkelin',age = 100) return render.index(i.name,i.age)
隨便寫一個(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)訪問http://127.0.0.1:8080/ 此時(shí)沒有傳遞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)訪問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)訪問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)中去,但是全局變量里又沒有這兩個(gè)變量,所以會(huì)報(bào)錯(cuò)
但有時(shí)我們想這樣傳遞參數(shù),不想加那個(gè)“?”這時(shí)我們得要更改urls規(guī)則
urls =( '/name=(.*)&age=(.*)','index', '/weixin/(.*?)','WeixinInterface' )
重新寫class index
class index: def GET(self,name,age): return render.index(name,age)
這里是將url的參數(shù)通過正則匹配然后傳遞到index類中的GET的參數(shù)中
當(dāng)訪問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í)不好控制,要求寫的正則工作量加大了
如果我想知道到底有多少參數(shù)通過GET方式傳遞過來,我可以直接return 來看一下到底有哪些傳遞過來了
接下來看一下post來的數(shù)據(jù):
我們可以制作一個(gè)簡(jiǎn)單的表單或者直接使用fiddler來構(gòu)造數(shù)據(jù)進(jìn)行POST傳值
def POST(self): data = web.data() return data
我想看一下得到的數(shù)據(jù)類型
return type(data)
得到的是<type 'str'>,也就是說web.py已經(jīng)將post的數(shù)據(jù)轉(zhuǎn)換成了str類型
那么我來試一下傳遞xml
<xml> <ToUserName>yanxingyang</ToUserName> <FromUserName>study_python</FromUserName> <CreateTime>123456</CreateTime> <MsgType>text</MsgType> <Content>Just a test</Content> </xml>
其實(shí)這個(gè)微信的XML格式做了一些更改,我來試著使用lxml對(duì)它進(jìn)行解析
from lxml import etree data = web.data() xml = etree.fromstring(data) content = xml.find(‘Content').text return content
得到的結(jié)果很好
相關(guān)文章
使用mypy對(duì)python程序進(jìn)行靜態(tài)檢查
大家好,本篇文章主要講的是使用mypy對(duì)python程序進(jìn)行靜態(tài)檢查,感興趣的同學(xué)快來看一看吧,對(duì)你有幫助的話記得收藏一下哦2021-11-11tensorflow使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)mnist分類
這篇文章主要為大家詳細(xì)介紹了tensorflow使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)mnist分類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09pycharm第三方庫安裝失敗的問題及解決經(jīng)驗(yàn)分享
這篇文章主要介紹了pycharm第三方庫安裝失敗的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05python如何對(duì)數(shù)組進(jìn)行降維
這篇文章主要介紹了python如何對(duì)數(shù)組進(jìn)行降維問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05詳解Tensorflow數(shù)據(jù)讀取有三種方式(next_batch)
本篇文章主要介紹了Tensorflow數(shù)據(jù)讀取有三種方式(next_batch),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02python區(qū)塊鏈簡(jiǎn)易版交易實(shí)現(xiàn)示例
這篇文章主要為大家介紹了python區(qū)塊鏈簡(jiǎn)易版交易實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05打包FlaskAdmin程序時(shí)關(guān)于static路徑問題的解決
近期寫了個(gè)基于Flask-admin的數(shù)據(jù)庫管理程序,通過pyinstaller打包,給別人用,經(jīng)過幾次嘗試,打包的數(shù)據(jù)一直找不到static里面的樣式文件,查閱資料后,最總把問題搞定了。寫下處理流程,供后來人參考2021-09-09DataFrame中的object轉(zhuǎn)換成float的方法
下面小編就為大家分享一篇DataFrame中的object轉(zhuǎn)換成float的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04