Pylons / Routes将POST或GET重写为花哨的URL

时间:2009-07-08 05:50:00

标签: python routes pylons

我建议的行为:

用户加载我的“搜索”页面,www.site.com / search,将他们的查询键入表单,点击提交,然后最终访问www.site.com/search/the+query而不是www .site.com /查询q = +的查询。我已经阅读了很多Pylons文档,刚刚读完了Routes文档,我想知道是否可以/应该在Routes层发生。我已经设置了我的应用程序,以便在给出www.site.com/search/the+query时执行搜索,但无法弄清楚如何将表单发送到此目的地。

或者这是应该在带有redirect_to()的控制器内发生的事情吗?

或其他地方?

跟进:

现在这不是一个真正的“一成不变”的愿望,更多的是对头脑风暴未来特征的好奇心。我正在设计一个使用维基百科转储的应用程序,并观察到当用户在维基百科上执行搜索并且搜索不是太模糊时,它会直接重定向到文章链接:en.wikipedia.org/wiki/Apple。它实际上正在执行中间HTTP 302重定向步骤,我只是好奇,如果在Pylons中有更优雅/可爱的方式。

2 个答案:

答案 0 :(得分:2)

HTML表单旨在使用查询字符串(?q=)或POST中的等效主体转到特定网址 - 您可以编写聪明且微妙的Javascript来拦截表单提交和用你喜欢的怪异方式重写它,或者使用redirect_to(后者需要做一些事情)。

但为什么你需要这种奇怪的行为而不仅仅是遵循标准?!请根据应用程序级需求解释您的用例......!

答案 1 :(得分:2)

您可以为任何网址发送任何内容,但如果您希望在浏览器的地址栏中显示特定网址,则必须使用重定向。这与您在服务器端使用Pylons,Django还是Rails无关。

在处理/search(无论POST还是GET)时,通常会在后端运行查询,如果只有一个搜索结果(或者压倒一个)相关结果)您将重定向到该结果,否则返回到显示前N个结果的链接的页面。这只是正常的做法,AFAIK。

相关问题