webpy的url動態匹配__web

來源:互聯網
上載者:User

因為看過django的url匹配功能,發現其模組耦合性的設計非常好,而之前用webpy寫的一個工具,因為後來不斷的添加功能導致產生N多的url匹配;所以就想看看webpy有沒有這個功能可以簡化一下url的匹配,還有就是分離url和實際處理模組之間的耦合度。

百度查了一下,結果不好使,webpy用的人本來就少,可恨google是沒法用,最後只有直接去看看是否能解決問題。好就好在按照django亂配了一通後有報錯,跟著報錯找到了具體的處理url的位置,稍微看了下源碼;貌似這塊處理還比較簡單的,所以就是試了一下。得知webpy也可以支援url跳轉配置,不過要用關鍵字,想要動態根據url的內容來映射對應的處理類,預設是沒有的,不過只要稍微添加一行代碼就可以添加一個簡易的此類功能。具體如下:

在url中配置跳轉:

urls = (            '^/seleniumdoc/$',                               'redirect /seleniumdoc/index',     )
使用的是redirect關鍵字,後面是空格再加藥跳轉的地址。

在url中動態映射到處理類:

1、修改webpy的源碼檔案【site-packages/web/application.py】403行後添加一句處理語句

402                raise web.redirect(url)403           elif '.' in f:404                f = f % tuple(args)  ##這句是添加的405                mod, cls = f.rsplit('.', 1)
2、在url中配置格式如下:

urls = (            '^/pythonapi/([^/]+)$',                        pre_fix + 'pythonapi.%s',     )
這樣在執行是就會把url中匹配的內容傳給了對應的字串預留位置%s;不過這個有一個不好就是必須是順序的,不能打亂順序,想要像django那樣的匹配就需要更多的處理了。就要添加帶索引的預留位置,或者用索引值;在處理函數中替換這些預留位置為對應的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.