webapp2路由返回404

时间:2011-12-20 17:31:32

标签: python google-app-engine webapp2

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

我的代码就像:

main.py

    import webapp2, urls

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

urls.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),
    ]

的app.yaml

    - url: .*
        script: main.app

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

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

1 个答案:

答案 0 :(得分:1)

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

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

应该是

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

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

希望这也能帮助别人。