2

このような問題があります。クラスの 1 つのメソッドで異なる URI を処理する必要があります (URI "/solution/add" および "solution/edit" の場合)。だから私はそのようなルーティングを書きました:

app = webapp2.WSGIApplication([webapp2.Route(r'/solutions/(add|edit)', handler='solution.SolutionPage:add_edit_solution'), ], debug=True)

そしてwebapp2は404エラーを出します。この問題の解決策を教えてください。

もちろん、URIごとに異なるルートを書くこともできますが、それほど興味深いものではありません.)

4

2 に答える 2

6

webapp2 docsが示すように、正規表現を山かっこで囲み、名前と式をコロンで区切る必要があります。名前は任意ですが、

<> の外側のすべては、一致する正規表現として解釈されません

したがって、次のようなもの:'/blog/<:\d{4}>/<:\d{2}>'または、あなたの場合、これ:

webapp2.Route(r'/solutions/<:(add|edit)>',
              handler='solution.SolutionPage:add_edit_solution')
于 2012-03-04T20:25:02.047 に答える
0

何か追加できれば。私自身の目的のために、少し似た操作を実行するハンドラーを作成しようとしましたが、ポイントは、引数の代わりに self.request.host または self.request.route を使用したことです。

これを実行し、switch case または if/elif/else ループを使用して結果を解析すると、URIHandler という名前のクラスを作成できます。これを使用して、あらゆる種類のリクエストを正しいリソース (404/500/yyy エラー ページでも) にルーティングします。新しいリソースごとにルートを書き換えたり追加したりする必要なく、動的に。

したがって、2 つの方法を比較して、少しベンチに入れることに興味があります。

于 2012-05-21T23:07:59.267 に答える