redirect()不实际重定向(Pylons的路由)

时间:2009-10-06 04:36:55

标签: python routes pylons

我正在我的Pylons应用程序中构建一个路由表。我不能让redirect()以它应该工作的方式工作。我不确定我做错了什么。

以下是Routes documentation

中redirect()用法的示例
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()是一个好主意,我希望能够按预期使用它,但我不确定我在这里做错了什么。

ETA @jasonjs:我相信没有其他路线匹配。当我尝试访问/查看然后查看Paster的输出时,这就是我得到的结果:

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 个答案:

答案 0 :(得分:1)

该语法有效,因此必须有其他内容。

路线对订单很敏感。重定向上方是否有另一条路径将/view与将返回404的控制器匹配?

路由对尾部斜杠也很敏感。您是否在浏览器中意外键入了斜杠但未在路径中键入斜杠,反之亦然?

最后,在development.ini中,如果您在level = DEBUG下设置[logger_routes],则可以在访问/view后查看日志消息以查看匹配的内容。

ETA:我刚尝试在同一路径的重定向之前放置一个POST匹配规则,它按预期工作。你是最新的路线版(1.11)吗?否则我没有其他任何东西,无法看到代码。这可能只是从一个准确的测试用例开始,直到它破坏为止,或者把它带走直到它工作......