Один проект webapp имеет много URL

И я должен это изменить:

('/addTopic', AddTopic),
('/delTopic', DeleteTopic),
('/addPost', AddPost),
('/delPost', DeletePost),

К этому:

('/tribes/addTopic', AddTopic),
  ('/tribes/delTopic', DeleteTopic),
  ('/tribes/addPost', AddPost),
  ('/tribes/delPost', DeletePost),

Но, если я добавлю это в свой проект, мне придется изменить URL-адрес в каждом файле py или html,

В джанго

Это может быть так:

urlpatterns = patterns('',
    (r'^articles/2003/$', 'news.views.special_case_2003')),
)

В мой проект легко добавить URL "новости",

Но есть ли это в веб-приложении?

Благодарность

обновлено:

(1) URL моей главной страницы:

  ('/', MainPage),
  ('/sign', Guestbook),

(2) URL-адрес проекта веб-приложения, который я хочу добавить:

('/', MainPage),
('/logout', LogoutPage),
('/login_response', LoginHandler),

И я хочу изменить (1) на это:

('/', MainPage),
('/sign', Guestbook),

('/aa/', p2.MainPage),
('/aa/logout', p2.LogoutPage),
('/aa/login_response', p2.LoginHandler),

Поэтому мне нужно изменить так много URL-адресов, например / на / aa /, или изменить / выйти на / aa / logout

В файле py и html, это тяжелая работа

Так какой простой способ сделать это?

-1
zjm1126 2 Июн 2010 в 12:56

2 ответа

Лучший ответ

Думаю, я понимаю, что вы пытаетесь сделать. Маршрутизация 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 сопоставит его с / [^ /] + / logout regex и передайте его в LogoutPage.

Если вы решите, что подкаталог должен быть «baz», а не «bar», вы можете изменить URL-адрес в app.yaml и, возможно, оставить остальные без изменений.

0
Drew Sears 2 Июн 2010 в 13:36

Я не совсем уверен, что понимаю, о чем вы спрашиваете. Шаблоны URL-адресов в webapp - это регулярные выражения, и они оцениваются в порядке от начала до конца. Вы можете включить захваченные группы в регулярное выражение, и они будут извлечены и переданы в качестве аргументов обработчику. Например:

('/articles/2003/(.*)', Articles2003),
('/articles/(\d+)/(.*)', Articles),
0
Nick Johnson 2 Июн 2010 в 09:56