我有這樣一個問題:我想要一個類的方法來處理不同的URI(對於URI「/解決方案/添加」和「解決方案/編輯」)。所以我寫了這樣的路由:webapp2:路由正則表達式
app = webapp2.WSGIApplication([webapp2.Route(r'/solutions/(add|edit)', handler='solution.SolutionPage:add_edit_solution'), ], debug=True)
而webapp2給出404錯誤。你能否建議解決這個問題?
Ofcourse我可以寫不同的路線,每URI,但它不是那麼有趣。)
它給出了一個錯誤: TypeError:add_edit_solution()只需要1個參數(給定2)。 我認爲這個錯誤發生是因爲這個表達式用於獲取參數(比如「product_id」等)。 – Dimitry 2012-03-04 21:02:50
@Dimitry,正確。有什麼問題?當你將一個正則表達式傳遞給'Route'時,它將使用正則表達式的組作爲位置參數或者如果你給它們命名的關鍵字參數。 「[名稱(如果已定義)](http://webapp-improved.appspot.com/guide/routing.html#the-url-template)用於爲路由創建URL。設置該值時,值的匹配正則表達式作爲關鍵字參數傳遞給處理函數,否則它作爲位置參數傳遞。「所以如果你想在這裏使用正則表達式,你必須傳遞一個接受* args或** kwargs的處理函數。期。 – senderle 2012-03-04 21:32:14
嗯,是的)它的工作原理。謝謝。在開始時我以不同的方式來實現這一點,我想實現這個沒有任何爭論,但正如我現在看到使用參數是更好的方法。 – Dimitry 2012-03-05 07:00:00