2

私が提案する行動:

ユーザーが私の「検索」ページ www.site.com/search を読み込み、クエリをフォームに入力し、送信をクリックすると、www.site ではなく www.site.com/search/the+query に行き着きます。 com/search?q=the+query. 私はすでに多くの Pylons のドキュメントを読み、Routes のドキュメントを読み終えたばかりで、これが Routes レイヤーで発生する可能性があるかどうか疑問に思っています。www.site.com/search/the+query が指定されたときに検索を実行するようにアプリケーションをセットアップしましたが、この宛先にフォームを送信する方法がわかりません。

それとも、これは、redirect_to() を使用してコントローラー内で発生する必要があるものですか?

それとも別の場所ですか?

ファローアップ:

これは、現時点での実際の「設定済み」の要望ではなく、将来の機能についてブレインストーミングするための好奇心です。ウィキペディアのダンプを使用するアプリケーションを設計していますが、ユーザーがウィキペディアで検索を実行し、検索があいまいでない場合、記事のリンク (en.wikipedia.org/wiki/Apple) に直接リダイレクトされることがわかりました。実際には HTTP 302 リダイレクトの中間ステップを実行していますが、Pylons でこれを行うためのよりエレガントでかわいい方法があるかどうかに興味があります。

4

2 に答える 2

2

HTML フォームは、クエリ文字列 ( ) または同等の本文を含む特定の URL に移動するように設計されてい?q=ますPOSTredirect_to後者には多少の手間がかかります)。

しかし、標準に従うだけでなく、なぜそのような奇妙な動作が必要なのですか?! アプリケーションレベルのニーズの観点からユースケースを説明してください...!

于 2009-07-08T05:56:42.583 に答える
2

任意の URL に必要なコンテンツを送信できますが、特定の URL をブラウザーのアドレス バーに表示する場合は、リダイレクトを使用する必要があります。これは、サーバー側で Pylons、Django、または Rails を使用するかどうかに関係ありません。

/search(かどうPOSTかに関係なく)の処理でGETは、通常はバックエンドでクエリを実行し、検索結果が 1 つしかない場合 (または圧倒的に関連性の高い結果が 1 つしかない場合) はその結果にリダイレクトし、そうでない場合は、へのリンクを表示するページにリダイレクトします。上位 N 件の結果。それは単なる通常の練習です、AFAIK。

于 2009-07-08T13:03:58.663 に答える