python - redirect() 实际上并不是重定向( Pylons 路由)

标签 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 页面而不是被重定向。转到/效果很好,所以我也不认为问题在那里。我认为路由中的重定向()是一个好主意,我希望能够按预期使用它,但我不确定我在这里做错了什么。

预计到达时间@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] 路由之前尝试匹配该路由。

最佳答案

该语法有效,因此肯定还有其他原因。

路由对顺序很敏感。重定向上方是否还有另一条路线可以将 /view 与返回 404 的 Controller 相匹配?

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

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

预计到达时间:我只是尝试在同一路径的重定向之前放置一个 POST 匹配规则,并且它按预期工作。您使用的是最新的 Routes 版本 (1.11) 吗?否则我没有什么可以给你的,看不到代码。这可能只是从一个准系统测试用例开始并不断构建直到它崩溃,或者删除一些东西直到它起作用......

关于python - redirect() 实际上并不是重定向( Pylons 路由),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1523613/

相关文章:

python - 带有 bool OR 的 Pandas groupby

python - Pyramid 忽略某些 View 的 csrf 验证

jquery - python列表到换行符分隔值

python - Docker错误命令非零代码: 1 python

python - __contains__ 函数的多个参数

python - 如何在 python 中清理文本文件?

php - 网址中带有语言前缀的 Laravel 5 多语言站点

javascript - 在 EmberJs : Route#setupController vs Controller#init 中初始化 Controller 状态

routes - 导轨 3 : subdomain routes

Python - 我的代码高效吗?或者人们会从杀死我的服务器中获得乐趣......?