標籤:inf cti 路徑 code 解析 class div python 注意
最近由於工作需要開始學習基於python的web應用程式框架web.py。為了方便學習,將學習心得逐日記下以便日後複習。
URL 範本:
web.py提供了一套url處理的模板,在python工程中,只需要將網頁結構配置為一個元組(tuple)即可。該元組在web.py中的解析模式為:url路徑,對應處理url的類名。這裡,類名必須和service代碼中對應的類名一致。例如,
1 urls = ( 2 "/tasks/?", "signin", 3 "/tasks/list", "listing", 4 "/tasks/post", "post", 5 "/tasks/chgpass", "chgpass", 6 "/tasks/act", "actions", 7 "/tasks/logout", "logout", 8 "/tasks/signup", "signup" 9 )10 11 class signin:12 def GET(self):13 pass
URL路徑匹配:
url路徑的配置不是固定的,可以通過在url路徑中嵌入Regex來靈活的擷取各種url結果。例如,“/taks/(test1|test2)”, “signin”將匹配“/task/test1”或者“/task/test2”。正則匹配方式可以通過下面的例子來理解:
在瀏覽器中顯示url為:http://localhost/myapp/greetings/hello?name=Joe,那麼在url元組中,路徑為/myapp/greetings/hello。web.py將自動在匹配是加入^和$以防匹配到不同的結果(/hello而非/hello/addnew)。當然,/hello/delete?name=(.+)也是不行的,因為在?後緊跟著一段query。具體url匹配方法可以訪問web.ctx。
通過url擷取變數:
在url中可以通過匹配模式獲得相應的變數,並將變數用於相應類的方法(get或post)中。例如,url配置為:"/users/list/(.+)", "list_users",list/後的部分將被抓取到當做變數記下來。在類中可以按如下方式使用:
1 class list_users:2 def GET(self, name):3 return "Listing info about user: {0}".format(name)
當然,可以傳入不止一個參量。特別要注意的是url query模式下(?後面的字串)可以通過web.input()方法直接擷取。
Web.py 架構學習筆記 - URL處理