我的web.py應用程序中有一個URL路由,我想運行它來捕獲所有到達服務器的URL,但只有在提供任何靜態資產之後。如何在web.py中的StaticMiddleware之後執行URL路由
例如,如果theres是我的static
目錄中的js/test.js,則路徑http://a.com/js/tests.js
應返回文件內容。但我也有我的URL路由設置,因此有是抓住一切像這樣的正則表達式:
urls = ('/.*', 'CatchAllHandler')
所以這應該運行只有如果沒有靜態資產被發現。對http://a.com/js/test.js
的請求應返回靜態文件test.js
,但對http://a.com/js/nope.js
的請求應通過CatchAllHandler
進行路由。
我已經研究過編寫自己的StaticMiddleware,但它只會幫助web.py操作的順序發生變化。目前,中間件在URL路由處理完成後執行。我需要中間件先運行,然後讓url路由清理未提供靜態資產的請求。
我有一個想法是使用notfound()函數作爲我抓住所有處理程序,但這可能不是最好的。
我最終這樣做了,但這不是我想要的修復。我想知道在URL路由執行之前是否有辦法讓任何中間件針對請求執行。這樣,無論哪個url託管靜態文件都無關緊要。 – 2012-01-15 02:11:45