просто добавить другой фреймворк для веб-приложений в мой проект - PullRequest
0 голосов
/ 02 июня 2010

один проект веб-приложения имеет много 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 «новости» в мой проект,

а есть ли в webapp такое?

спасибо

Последнее обновление:

(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, как / на / аа /, или изменить / выйти на / аа / выйти

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

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

Ответы [ 2 ]

0 голосов
/ 02 июня 2010

Мне кажется, я понимаю, что ты пытаешься сделать. 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 регулярное выражение и передать его в LogoutPage.

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

0 голосов
/ 02 июня 2010

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

('/articles/2003/(.*)', Articles2003),
('/articles/(\d+)/(.*)', Articles),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...