2008-09-16 7 views
1

Ploneには、そのサイトの機能に似た「Googleが提案する」美しい検索ボックスがあります。それはPDFのようなアップロードされたドキュメントの索引付けもします。 Djangoサイトでこの種の機能を提供できるモジュールを知っている人はいますか?DjangoのPloneのような検索ボックスですか?

答えて

1

Ploneは、インデックス付き属性(最終変更、作成者、タイトルなどのフィールドはコンテンツオブジェクトからこのテーブルにコピーされます)の別個のメタデータテーブルを維持することによってLiveSearch機能を実装します。次に、コンテンツオブジェクトはObjectAdded/ObjectModified/ObjectRemovedイベントを送信し、イベントサブスクライバはこれらのイベントをリッスンし、メタデータテーブルの更新を行います(Djangoイベントの名前付きシグナルです)。その後、メタデータを検索して適切なLiveSearch HTMLを返す固定URLにブラウザビューが公開され、最後に各HTMLページに適切なJavaScriptが送信され、オートコンプリートAJAX機能が処理され、このビューにクエリが実行され、 DOM。

LiveSearchが複数のモデル/コンテンツタイプを照会するようにするには、独自のイベントを送信し、サブスクライバに適切に処理させる必要があります。これは、単一の検索に対して複数のクエリを実行する場合のパフォーマンスの低下が懸念されない(または単一のコンテンツタイプのみを検索したい)場合は、小さなデータセットまたはトラフィックの少ないサイトでは必要ありません。あなたのビューからのクエリ。

JavaScript側では、自分自身をロールしたり、既存のJavaScriptライブラリを使用することができます。これは通常、JSライブラリでオートコンプリートと呼ばれます。初心者のためにYUIのオートコンプリートとScriptaculousのオートコンプリートがあります。また、JavaScriptオートコンプリートの実装がたくさんあります。 PloneはJavaScriptライブラリとしてKSSを使用していますが、KSSのlivesearchプラグインは、抜粋するサンプルコードを探すのに適しています。

http://pypi.python.org/pypi/kss.plugin.livesearch

とDjangoでKSSを使用してのチュートリアル:それはきれいに(JavaScriptを記述しなくても)、クライアント側でのコンテンツから行動を分離するので

http://kssproject.org/docs/tutorial/kss-in-django-with-kss-django-application

KSSはかなりいいです、 Scriptaculousは概念的には少しシンプルで、幾分良い文書(http://github.com/madrobby/scriptaculous/wikis/ajax-autocompleter)を持っています。

関連する問題