私はこのような問題があります。クラスの1つのメソッドが(URI "/ solution/add"と "solution/edit"の)異なるURIを扱うようにします。だから私はそのようなルーティングを書いた:webapp2:ルーティングの正規表現
app = webapp2.WSGIApplication([webapp2.Route(r'/solutions/(add|edit)', handler='solution.SolutionPage:add_edit_solution'), ], debug=True)
そして、webapp2は404エラーを出します。この問題の解決策をお聞かせください。
勿論私はすべてのURIのための異なる経路を書き込むことができますが、それはとても興味深いものではありません。)
エラー: TypeError:add_edit_solution()は、1つの引数(2が指定されています)をとります。 このエラーは、この式が引数(「product_id」など)を取得するためであると考えられます。 – Dimitry
@Dimitry、正しい。どうしたの?正規表現を 'Route'に渡すと、それは定位置の引数として正規表現のグループを持つハンドラを呼び出すか、名前を与えた場合はキーワード引数としてハンドラを呼び出します。 "[定義されている場合は名前](http://webapp-improved.appspot.com/guide/routing.html#the-url-template)は、ルートのURLを作成するために使用され、設定されている場合は、一致した正規表現のうちの1つは、キーワード引数としてハンドラに渡されます。それ以外の場合は、位置引数として渡されます。だからここで正規表現を使いたいなら、* argsか** kwargsを受け入れるハンドラを渡さなければなりません。期間。 – senderle
まあ、ええ)それは動作します。ありがとうございました。最初はこれを実装する方法が異なると思っていましたが、引数なしで実装したかったのですが、引数を使用する方が良い方法です。 – Dimitry