如何使用webapp2选择尾部斜杠?

Sud*_*han 19 python google-app-engine webapp2

我正在使用新的webapp2(现在是1.6中的默认webapp),我无法弄清楚如何在这样的代码中使尾部斜杠可选:

webapp.Route('/feed', handler = feed)
Run Code Online (Sandbox Code Playgroud)

我试过/feed/?,/feed/*,/feed\/*/feed\/?,都无济于事.

Ane*_*eon 13

为避免在同一页面上创建重复的URL,您应使用RedirectRoute并将strict_slash设置为True以自动重定向/ feed/to/feed,如下所示:

from webapp2_extras.routes import RedirectRoute

route = RedirectRoute('/feed', handler=feed, strict_slash=True)
Run Code Online (Sandbox Code Playgroud)

更多信息,请访问http://webapp2.readthedocs.io/en/latest/api/webapp2_extras/routes.html


stu*_*tun 7

我不喜欢这个RedirectRoute类,因为它会导致不必要的HTTP重定向.
基于webapp2 Route类的文档,这里有一个更详细的答案,在这个webapp2.Route中有可选的前导部分线程.

简答

我的路由模式适用于以下URL.

  1. /
  2. /饲料
  3. /饲料/
  4. /饲料/创建
  5. /进料/创建/
  6. /进料/编辑/ {ENTITY_ID}
SITE_URLS = [
    webapp2.Route(r'/', handler=HomePageHandler, name='route-home'),

    webapp2.Route(r'/feed/<:(create/?)|edit/><entity_id:(\d*)>',
        handler=MyFeedHandler,
        name='route-entity-create-or-edit'),

    webapp2.SimpleRoute(r'/feed/?',
        handler=MyFeedListHandler,
        name='route-entity-list'),
]
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :-)