淺析Python的web.py架構中url的設定方法

來源:互聯網
上載者:User
網頁中的資料在傳遞的時候有GET和POST兩種方式,GET是以網址的形式傳參數,在web.py中有著很好的匹配,如果我們配置以下的urls

 urls =(  '/','index',  '/weixin/(.*?)','WeixinInterface'    )

先不考慮/weixin/後面的東西,現在我們來寫index的類

 class index:  def GET(self):    i = web.input(name = 'kevinkelin',age = 100)         return render.index(i.name,i.age)

隨便寫一個index.html模板檔案

 $def with(name,age)$if name:  I just want to say hello to $name, he is $age years old$else:  hello,world!

當訪問http://127.0.0.1:8080/ 此時沒有傳遞name與age的值,由於我的GET函數裡定義了預設的name與age的值,所以程式會將kevinkelin與26傳遞到模板中去得到以下的輸出

I just want to say hello to kevinkelin, he is 100 years old

當訪問http://127.0.0.1:8080/?name=yyx&age=26 即向GET函數中傳遞name = yyx and age = 26的時候得到以下的輸出

I just want to say hello to yyx, he is 26 years old

我們也可以不定義預設的的參數,即定義為空白

i = web.input(name = None,age = None)

當訪問http://127.0.0.1:8080/ 的時候將會得到 hello,world!的輸出即模板中的else
但是如果你不定義name和age將會出錯

i = web.input()

這是因為後面你將i.name與i.age分配到模板當中去,但是全域變數裡又沒有這兩個變數,所以會報錯
但有時我們想這樣傳遞參數,不想加那個“?”這時我們得要更改urls規則

 urls =(  '/name=(.*)&age=(.*)','index',  '/weixin/(.*?)','WeixinInterface'    )

重新寫class index

 class index:  def GET(self,name,age):    return render.index(name,age)

這裡是將url的參數通過正則匹配然後傳遞到index類中的GET的參數中
當訪問http://127.0.0.1:8080/name=yyx&age=26 時將得到

I just want to say hello to yyx, he is 26 years old

第二種方法看似簡單,但其實不好控制,要求寫的正則工作量加大了
如果我想知道到底有多少參數通過GET方式傳遞過來,我可以直接return 來看一下到底有哪些傳遞過來了
接下來看一下post來的資料:
我們可以製作一個簡單的表單或者直接使用fiddler來構造資料進行POST傳值

def POST(self):    data = web.data()        return data

我想看一下得到的資料類型

return type(data)

得到的是,也就是說web.py已經將post的資料轉換成了str類型
那麼我來試一下傳遞xml

 yanxingyangstudy_python123456textJust a test

其實這個的XML格式做了一些更改,我來試著使用lxml對它進行解析

from lxml import etreedata = web.data()xml = etree.fromstring(data)content = xml.find(‘Content').textreturn content

得到的結果很好

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.