Szukałem sposobu, aby uczynić cięcie kursowe w katalogu głównym bloku PathPrefixRoute opcjonalnie.
Jeśli masz, powiedzmy:
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),
]),
])
Będziesz mieć dostęp do /admin/
, ale nie /admin
.
Ponieważ nie mogłem znaleźć żadnego lepszego rozwiązania, Dodałem redirect_to_name
do dodatkowego szlaku, jak:
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),
]),
])
Jestem zainteresowany lepszych rozwiązań tego problemu.
Czy powinienem wybrać rozwiązanie Stun i po prostu nie używać RedirectRoute?
Dzięki. Czy chcesz powiedzieć, że jeśli mam sto tras, potrzebuję również setek redirectroutów? Wygląda na strasznie niechlujne rozwiązanie. –
Hi. Nie, zamieniasz trasy na RedirectRoutes, więc nie potrzebujesz obu. RedirectRoute wykonuje całą trasę, ale dodaje także opcję "strict_slash", a także inne funkcje przekierowania. Sprawdź link zamieszczony powyżej, aby uzyskać szczegółowe informacje. – Aneon
To nie zawsze jest dobry pomysł. Jeśli Twój klient nie jest przeglądarką internetową (np. Jeśli piszesz api dostępne dla http na swojej stronie internetowej), może nie stosować się do przekierowania. – Ponkadoodle