2009-10-06 5 views
1

Je suis en train de construire une table de routes dans mon application Pylons. Je ne peux pas obtenir redirect() pour fonctionner comme cela devrait fonctionner. Je ne suis pas sûr de ce que je fais mal.redirect() Non (Routes En fait Réorientation pour Pylons)

Voici un exemple de redirect() l'utilisation de la Routes documentation:

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

Voici ce qui apparaît dans mon fichier routing.py:

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

Voici un itinéraire à l'aide redirect() qui apparaît à la fin de mon fichier routing.py:

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

Cette route fonctionne très bien, donc je sachez que redirect() est présent et fonctionnel. Par conséquent, je fais quelque chose de mal dans la redirection/view. Je le sais parce que lorsque je pointe mon navigateur sur/view, j'obtiens la page 404 au lieu d'être redirigée. Aller à/fonctionne très bien, donc je ne pense pas que le problème est là, non plus. Je pense que redirect() Itinéraires est une excellente idée et je voudrais pouvoir l'utiliser comme prévu, mais je ne sais pas ce que je fais mal ici.

ETA @jasonjs: Je crois qu'aucun autre correspond à la route. Quand j'essaie d'accéder à/vue, puis regarde la sortie de Paster, voici ce que je reçois:

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

qui me semble assez concluante. Je dois mentionner qu'il ya un itinéraire qui correspond requêtes POST à ​​/ Vue:

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

Cette route fonctionne aussi correctement, et je l'ai répertorié plus haut dans routing.py afin qu'il tente de faire correspondre que avant d'essayer de correspond à l'itinéraire/view [GET].

+0

Réponse éditée: seule une autre chose que je peux penser est de s'assurer que vous êtes au dernière version de Routes comme "ça marche pour moi." –

Répondre

1

qui fonctionne de syntaxe, il doit y avoir quelque chose d'autre se passe.

Routes est sensible à l'ordre. Y a-t-il une autre route au-dessus de la redirection qui correspondrait /view à un contrôleur qui retournerait un 404?

Routes est également sensible à des barres obliques de fuite. Avez-vous tapé accidentellement une barre oblique dans le navigateur, mais pas sur la route, ou vice versa?

Enfin, dans development.ini, si vous définissez level = DEBUG sous [logger_routes], vous pouvez vérifier les messages du journal après avoir visité /view pour voir ce qui a été adapté. ETA: J'ai juste essayé de mettre une règle POST-matching avant une redirection pour le même chemin, et cela a fonctionné comme prévu. Êtes-vous sur la dernière version de Routes (1.11)? Sinon, je n'ai rien d'autre pour vous, je ne peux pas voir le code. Il peut s'agir simplement de commencer par un cas de test de barebones et de construire jusqu'à ce qu'il se casse, ou de prendre des choses jusqu'à ce que ça fonctionne ...

+0

Modifié pour refléter votre demande d'information. – Krinn

+0

Eh bien, allant de 1.10 à 1.11 travaillé, alors merci. Je vais le redire à des corrections de bugs. – Krinn