我建议的行为:
用户加载我的“搜索”页面 www.site.com/search,将他们的查询输入表单,点击提交,然后最终到达 www.site.com/search/the+query 而不是 www .site.com/search?q=the+查询。我已经阅读了很多 Pylons 文档,并且刚刚读完了 Routes 文档,想知道这是否可以/应该在 Routes 层发生。我已经将我的应用程序设置为在给定 www.site.com/search/the+query 时执行搜索,但无法弄清楚如何将表单发送到此目的地。
或者这是应该在带有 redirect_to() 的 Controller 内部发生的事情吗?
还是别的地方?
跟进:
这不是现在真正的“一成不变”的愿望,而是对集思广益 future 功能的好奇心。我正在设计一个使用维基百科转储的应用程序,并观察到当用户在维基百科上执行搜索并且搜索不太模糊时,它会直接重定向到文章链接:en.wikipedia.org/wiki/Apple。它实际上是在中间执行 HTTP 302 重定向步骤,我很好奇在 Pylons 中是否有更优雅/更可爱的方式来执行此操作。
请您参考如下方法:
您可以为任何 URL 发送您想要的任何内容,但是如果您希望特定的 URL 出现在浏览器的地址栏中,则必须使用重定向。这与您在服务器端使用 Pylons、Django 还是 Rails 无关。
在处理 /search(无论是 POST 还是 GET)时,通常会在后端运行查询,如果只有一个搜索结果(或一个压倒性的相关结果)您会重定向到该结果,否则会重定向到显示前 N 个结果链接的页面。这只是正常做法,AFAIK。
