redirect () фактически не перенаправляет (маршруты для пилонов) - PullRequest
1 голос
/ 06 октября 2009

Я создаю таблицу маршрутов в своем приложении Pylons. Я не могу заставить redirect () работать так, как он должен работать. Я не уверен, что я делаю неправильно.

Вот пример использования redirect () из документации Routes :

map.redirect("/home/index", "/", _redirect_code="301 Moved Permanently")

Вот что появляется в моем файле routing.py:

map.redirect("/view", "/", _redirect_code="301 Moved Permanently")

Вот маршрут с использованием redirect (), который появляется в конце моего файла routing.py:

map.redirect('/*(url)/', '/{url}', _redirect_code="301 Moved Permanently")

Этот маршрут работает просто отлично, поэтому я знаю, что redirect () присутствует и работает. Поэтому я что-то не так делаю в редиректе / view. Я знаю это, потому что когда я указываю своему браузеру на / view, я получаю страницу 404 вместо того, чтобы перенаправляться. Переход к / работает просто отлично, так что я не думаю, что проблема тоже есть. Я думаю, что redirect () в Routes - отличная идея, и я хотел бы использовать ее по назначению, но я не уверен, что я делаю здесь неправильно.

ETA @jasonjs: я считаю, что ни один другой маршрут не подходит. Когда я пытаюсь получить доступ / посмотреть, а затем посмотреть на вывод Пастера, вот что я получаю:

21:22:26,276 DEBUG [routes.middleware] No route matched for GET /view

что мне кажется довольно убедительным. Я должен упомянуть, что есть маршрут, который соответствует запросам POST к / view:

map.connect('/view', controller='view', action='search', conditions=dict(method=['POST'])

Этот маршрут также работает корректно, и я уже перечислил его ранее в routing.py, чтобы он пытался сопоставить его, прежде чем попытаться сопоставить маршрут / view [GET].

1 Ответ

1 голос
/ 06 октября 2009

Этот синтаксис работает, поэтому должно быть что-то еще.

Маршруты чувствительны к порядку. Есть ли другой маршрут выше перенаправления, который соответствовал бы /view контроллеру, который возвратил бы 404?

Маршруты также чувствительны к конечным слешам. Вы случайно набрали косую черту в браузере, но не в маршруте, или наоборот?

Наконец, в development.ini, если вы установите level = DEBUG в [logger_routes], вы можете проверить сообщения журнала после посещения /view, чтобы увидеть, что было найдено.

ETA: я просто попытался поместить правило сопоставления POST перед перенаправлением по тому же пути, и оно заработало, как и ожидалось. Вы используете последнюю версию Routes (1.11)? В противном случае у меня больше ничего нет, я не могу видеть код. Это может быть просто вопрос запуска с базового тестового примера и наращивания, пока он не сломается, или удаления вещей, пока он не заработает ...

...