一个webapp项目有很多网址
我必须改变这个:
('/addTopic', AddTopic),
('/delTopic', DeleteTopic),
('/addPost', AddPost),
('/delPost', DeletePost),
到此:
('/tribes/addTopic', AddTopic),
('/tribes/delTopic', DeleteTopic),
('/tribes/addPost', AddPost),
('/tribes/delPost', DeletePost),
但是,如果我将此添加到我的项目中,我必须更改每个py文件或html文件中的URL,
在django
可以是这样的:
urlpatterns = patterns('',
(r'^articles/2003/$', 'news.views.special_case_2003')),
)
很容易将'新闻'的网址添加到我的项目中,
但是webapp有这个吗?
感谢
更新
(1)我的主页面网址是:
('/', MainPage),
('/sign', Guestbook),
(2)我要添加的webapp项目的url是:
('/', MainPage),
('/logout', LogoutPage),
('/login_response', LoginHandler),
我希望将(1)更改为:
('/', MainPage),
('/sign', Guestbook),
('/aa/', p2.MainPage),
('/aa/logout', p2.LogoutPage),
('/aa/login_response', p2.LoginHandler),
所以我必须更改/ to / aa /这么多的url,或者更改/ logout到/ aa / logout
在py文件和html文件中,这是一项艰苦的工作
所以这么简单吗?
答案 0 :(得分:0)
我不太清楚我明白你在问什么。 webapp中的URL模式是正则表达式,它们按顺序进行评估,从头到尾。您可以在正则表达式中包含捕获的组,它们将被提取并作为参数传递给处理程序。例如:
('/articles/2003/(.*)', Articles2003),
('/articles/(\d+)/(.*)', Articles),
答案 1 :(得分:0)
我想我明白你要做什么。 URL路由非常灵活。当请求进入时,URL与您的处理程序列表匹配,以确定调用哪个python脚本。如果您使用的是webapp,则会将URL与第二个正则表列表进行匹配,以确定哪个类处理请求。
假设您的app.yaml看起来像这样:
handlers:
- url: /foo/.*
script: foo.py
- url: /bar/.*
script: bar.py
在bar.py里面,你有这个:
('/[^/]+/', MainPage),
('/[^/]+/logout', LogoutPage),
('/[^/]+/login_response', LoginHandler)
这些正则表达式前缀应匹配以斜杠开头的URL,后跟一个或多个不是斜杠的字符(任何子目录名称),然后使用另一个斜杠,后跟其余的URL。
如果有/ bar / logout请求,app.yaml会将它与/bar/.*正则表达相匹配并将其传递给bar.py,而bar.py会将其与/ [^ /]匹配+ /注销正则表达式并将其传递给LogoutPage。
如果您决定要将子目录设为“baz”而不是“bar”,则可以更改app.yaml中的网址,并可能保留其余部分。