【问题标题】:redirect() Not Actually Redirecting (Routes for Pylons)redirect() 实际上不是重定向(用于 Pylons 的路由)
【发布时间】:2010-12-04 03:53:54
【问题描述】:

我正在我的 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 页面,而不是被重定向。去 / 工作得很好,所以我也不认为问题存在。我认为 Routes 中的 redirect() 是一个好主意,我希望能够按预期使用它,但我不确定我在这里做错了什么。

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

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

这对我来说似乎很有定论。我应该提一下,有一条路由匹配到 /view 的 POST 请求:

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

该路由也可以正常工作,我在前面的 routing.py 中列出了它,以便它在尝试匹配 /view[GET] 路由之前尝试匹配该路由。

【问题讨论】:

  • 已编辑答案:我能想到的唯一另一件事是确保您使用的是最新的 Routes 版本,因为“它对我有用。”

标签: python routes pylons


【解决方案1】:

该语法有效,所以肯定有其他事情发生。

路线对顺序很敏感。重定向上方是否有另一条路线可以将/view 匹配到将返回 404 的控制器?

Routes 对尾部斜杠也很敏感。您是否不小心在浏览器中输入了斜杠,但在路径中没有输入,反之亦然?

最后,在development.ini中,如果你在[logger_routes]下设置了level = DEBUG,那么你可以在访问/view之后查看日志信息,看看匹配到了什么。

ETA:我刚刚尝试在同一路径的重定向之前放置一个 POST 匹配规则,它按预期工作。您使用的是最新的 Routes 版本 (1.11) 吗?否则我没有别的东西给你,看不到代码。这可能只是从一个准系统测试用例开始并建立直到它崩溃,或者把东西拿走直到它工作......

【讨论】:

  • 嗯,从 1.10 到 1.11 工作正常,谢谢。我会把它归结为错误修正。
猜你喜欢
  • 1970-01-01
  • 2018-04-01
  • 2021-12-28
  • 1970-01-01
  • 2017-10-29
  • 2023-03-22
  • 2021-02-15
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多