Estaba buscando una forma de hacer que la barra inclinada en la raíz de un bloque PathPrefixRoute sea opcional.
Si usted tiene, dicen:
from webapp2_extras.routes import RedirectRoute, PathPrefixRoute
from webapp2 import Route
app = webapp2.WSGIApplication([
PathPrefixRoute('admin', [
RedirectRoute('/', handler='DashboardHandler', name='admin-dashboard', strict_slash=True),
RedirectRoute('/sample-page/', handler='SamplePageHandler', name='sample-page', strict_slash=True),
]),
])
usted será capaz de acceder /admin/
, pero no /admin
.
Como no podía encontrar ninguna solución mejor, ¡Tengo una redirect_to_name
a una ruta adicional, como:
from webapp2_extras.routes import RedirectRoute, PathPrefixRoute
from webapp2 import Route
app = webapp2.WSGIApplication([
Route('admin', handler='DashboardHandler', name='admin-dashboard'),
PathPrefixRoute('admin', [
RedirectRoute('/', redirect_to_name='admin-dashboard'),
RedirectRoute('/sample-page/', handler='SamplePageHandler', name='sample-page', strict_slash=True),
]),
])
Estoy interesado en recibir mejores soluciones a este problema.
¿Debo buscar la solución de Stun y simplemente no usar RedirectRoute?
Gracias. ¿Quiere decir que si tengo cien rutas, también necesito cien redirectroutes? Parece una solución terriblemente desordenada. –
Hola. No, reemplazas las rutas con RedirectRoutes, por lo que no necesitas ambas. RedirectRoute hace todo lo que hace Route, pero también agrega la opción "strict_slash", así como algunas otras funcionalidades de redirección. Mira el enlace que publiqué arriba para más detalles. – Aneon
Esto no siempre es una buena idea. Si su cliente no es un navegador web (por ejemplo, si está escribiendo una API accesible para su sitio web), es posible que no siga el redireccionamiento. – Ponkadoodle