webapp2 路由返回 404
我正在尝试使用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
我似乎无法加载/view/action_one(返回404),但可以加载/admin/action_one。
有没有人能告诉我我哪里做错了?非常感谢你的帮助!
1 个回答
1
好的,我发现了我自己的愚蠢错误(没错,真的是个“哎呀!”的时刻):
Route(r'/<action_three:\w+>'
应该是
Route(r'/<action_three:[^/]+>'
它在匹配数据存储的键时遇到了问题,因为这些键可能包含其他字符,而这些字符用 \w 表示。通常,选择除了 / 以外的所有字符(用 [^/]+)就能解决这个问题。
希望这也能帮助到其他人。