我正在尝试使用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。
有关我在这里做错了什么的建议吗?感谢您的帮助!
答案 0 :(得分:1)
好的,我发现了我的愚蠢错误(是的,一个真正的“DOH!”时刻):
Route(r'/<action_three:\w+>'
应该是
Route(r'/<action_three:[^/]+>'
匹配数据存储区时遇到问题,因为它们可能包含由\ w表示的其他字符。除了/之外其他所有事情都会解决这个问题(使用[^ /] +)。
希望这也能帮助别人。