2014-01-30 3 views
0

Я хотел бы перенаправить серию установленных маршрутов в WebApp2, которые находятся под PathPrefixRoute. Например, что-то вроде foo/bar и foo/baz будет перенаправлено на newfoo/bar и newfoo/baz.Перенаправление PathPrefixRoutes в WebApp2

Вот что я бы сегодня:

import webapp2 
from webapp2_extras import routes 
.... 
routes.PathPrefixRoute('/foo', [ 
    webapp2.Route('/bar', 'BarHandler', name='bar_handler'), 
    webapp2.Route('/baz', 'BazHandler', name='baz_handler'), 
    # Many more routes below this. 
]) 
.... 

Я хотел бы закончить с

import webapp2 
from webapp2_extras import routes 
.... 
routes.PathPrefixRoute('/newfoo', [ 
    webapp2.Route('/bar', 'BarHandler', name='bar_handler'), 
    webapp2.Route('/baz', 'BazHandler', name='baz_handler'), 
    # Many more routes below this. 
]), 
.... 

, удостоверившись, что люди, которые посещают старые URLs правильно перенаправлены на новые ,

Заранее благодарен!

ответ

0

Ну, вы могли бы просто установить задвижку все для /foo/some_arg в главном приложении

app = webapp2.WSGIApplication([ 
    ('/foo/(\w+)', OldFooHandler), 
    ... 

И тогда есть класс, который перенаправляет любой запрос для старого обработчика к новому

class OldFooHandler(webapp2.RequestHandler): 
    def get(self, second_arg): 
    self.redirect('/newfoo/%s' % second_arg) 

И, конечно же, вы просто используете свой обработчик маршрута, чтобы поймать все остальное, прошедшее до /newfoo

+0

Спасибо за ваш ответ! Я надеюсь, что есть способ сделать это, не добавляя дополнительных обработчиков. Подобно использованию webapp2.RedirectHandler в одном маршруте, но, по сути, говорит, что «этот префикс перенаправляет на этот префикс все после его присоединения. – betaorbust