webpy學習筆記——理解URL處理

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

問題:如何為整個網站設計一套URL處理和調度的方案?

解決方案:webpy的URL處理方案簡單但是強大和靈活。在每個應用的頂部,你經常會看到一個在元組中定義的完整的URL調度方案。例如:

urls = (    "/tasks/?", "signin",    "/tasks/list", "listing",    "/tasks/post", "post",    "/tasks/chgpass", "chgpass",    "/tasks/act", "actions",    "/tasks/logout", "logout",    "/tasks/signup", "signup")

這個元組的格式是:url-pattern-path,handler-class 這種模式會重複定義更多的URL模式。如果你不理解URL模式和處理類之間的關係,請查看Hello World example或者Quick Start Tutorial在你

閱讀cookbook的其他部分之前。

 

路徑匹配 path matching

 

你可以使用強大的Regex去設計更加靈活的URL模式。例如,/(test1|test2)會匹配/test1或/test2兩者中任意一個。關鍵在於理解匹配發生在你的URL的路徑上。

例如,以下的URL:

http://localhost/myapp/greetings/hello?name=Joe

該URL的路徑是/myapp/greetings/hello 。webpy會在內部添加一個 ^ 和 $ 到url模式,這樣,/tasks/就不會去匹配/tasks/addnew 這樣的模式。當匹配路徑時,你不能使用這樣的模式:/tasks/delete?name=(.+)作為?後面的部分被稱為query(字串),所以不能被正確匹配到。關於URL更詳細的描述,請參考web.ctx。

 

捕獲參數 capture parameters

你可以把在URL模式中捕獲到參數用於你的處理類中:

"/users/list/(.+)", "list_users"

在list/之後被捕獲到的資料區塊可以作為參數被用在GET或者POST中:

class list_users:    def GET(self, name):        return "Listing info about user: {0}".format(name)

你可以定義多個參數。還要注意,URL字串中的參數(即出現在?後面的那部分)可以在使用web.input()被擷取到。

 

在意在子應用中的情況 Note sub-application

 

為了更好的處理更大的web應用,webpy還支援sub-application  當你在給子應用設計URL方案時,請牢記,路徑(web.ctx.path)會讓父路徑被剝奪。例如,如果在主應用中,你定義一個URL模式/blog

跳轉到blog子應用,在你的blog子應用中所有的URL模式都會以 / 開始而不是 /blog 。查看 web.ctx 擷取cookbook規則更多的細節。

 

webpy學習筆記——理解URL處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.