0

我正在尝试使用 webapp2 路由,但目前失败了。它似乎与我设置的路由规则不匹配,因此为某些规则返回 404。

我的代码是这样的:

主文件

    import webapp2, urls

    app = webapp2.WSGIApplication(urls.SITE_URL_PATTERNS, debug=True)

网址.py

    from webapp2 import Route
    from webapp2_extras import routes

    import test_handler


    SITE_URL_PATTERNS = [
            routes.PathPrefixRoute('/admin', [
                    Route(r'/action_one', test_handler.take_action_one),
                    Route(r'/action_two', test_handler.take_action_two),
                    Route(r'/<action_three:\w+>', test_handler.take_action_three),
            ]),
            Route(r'/view/action_one', test_handler.view_action_one),
            Route(r'/', test_handler.view_homepage),
    ]

应用程序.yaml

    - url: .*
        script: main.app

我似乎无法加载 /view/action_one(返回 404),但我可以加载 /admin/action_one。

关于我在这里做错了什么有什么建议吗?感谢你的帮助!

4

1 回答 1

1

好的,我发现了我的愚蠢错误(是的,一个真正的“DOH!”时刻):

Route(r'/<action_three:\w+>'

应该

Route(r'/<action_three:[^/]+>'

它在匹配数据存储键时遇到问题,因为这些键可能包含由 \w 表示的其他字符。除了 / 之外的所有其他东西通常会解决这个问题(使用 [^/]+)。

希望这对其他人也有帮助。

于 2011-12-21T08:49:34.540 回答