1

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

4

1 に答える 1

2

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

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

JavaScript側については、自分で作成することも、既存のJavaScriptライブラリを使用することもできます。これは通常、JSライブラリではオートコンプリートと呼ばれます。初心者向けのYUIオートコンプリートとScriptaculousオートコンプリートがあり、JavaScriptオートコンプリートの実装はもっとたくさんあるでしょう。PloneはJavaScriptライブラリにKSSを使用しています。KSSlivesearchプラグインは、抽出するコードの例を探す場合に開始するのに適した場所です。

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

そして、DjangoでKSSを使用するためのチュートリアル:

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

KSSは、(JavaScriptを記述する必要なしに)クライアント側のコンテンツから動作を明確に分離するため、非常に優れていますが、Scriptaculousは概念的に少し単純で、ドキュメントがいくらか優れています(http://github.com/madrobby/scriptaculous/wikis/ ajax-autocompleter)。

于 2008-09-16T00:53:30.080 に答える