2

我有这样一个问题:我希望该类的一种方法来处理不同的 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 文档所示,您必须将正则表达式放在尖括号中,并用冒号分隔名称和表达式。该名称是可选的,但

<> 之外的所有内容都不会被解释为要匹配的正则表达式

所以是这样的:'/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 错误页面)动态地无需为每个新资源重写或添加路由。

所以我有兴趣比较这两种方法来让他们稍微调整一下。

于 2012-05-21T23:07:59.267 回答