Frage

Plone hat ein schönes Suchfeld mit einem „Google vorschlagen“ wie Funktionalität für seine Website. Es gibt sogar Indizes hochgeladenen Dokumente wie PDFs. Kennt jemand ein Modul, das diese Art von Funktionalität in einer Django-Website zur Verfügung stellen kann?

War es hilfreich?

Lösung

Plone implementiert es Livesearch-Funktion ist durch eine separate Metadatentabelle indizierter Attributs (Felder wie zuletzt geändert, Ersteller, Titel aus den Inhaltsobjekten in diese Tabelle kopiert werden) beibehalten wird. Content-Objekte dann ObjectAdded / ObjectModified / ObjectRemoved Ereignisse senden, und ein Ereignis Teilnehmer hört für diese Veranstaltungen und ist verantwortlich für die Metadatentabelle zu aktualisieren (in Django Ereignisse Signale genannt). Dann gibt es eine Browser-Ansicht mit einer festen URL ausgesetzt, die die Metadaten durchsucht und gibt den entsprechenden Livesearch HTML, und schließlich jede HTML-Seite wird die entsprechende JavaScript gesendet, um die zum automatischen Vervollständigung AJAX-Funktionalität zu handhaben diese Ansicht abfragen und die resultierenden HTML-Ergebnisse in den Schlitz DOM.

Wenn Sie Ihre Livesearch mehrere Modelle / Inhaltstypen abzufragen, Sie gehen zu müssen wahrscheinlich Ihre eigenen Veranstaltungen senden und haben ein Teilnehmer sie entsprechend behandeln. Dies ist nicht notwendig für eine kleineren Datenmengen oder weniger Traffic-Sites, wo die Leistungseinbuße mehr Anfragen für eine einzelne Suche nach tut kein Problem ist (oder Sie wollen nur einen einzigen Inhaltstyp suchen), und Sie können nur das tun, mehr Anfragen von Ihrer Ansicht.

Wie für die Seite JavaScript können Sie Roll-your-own oder eine vorhandene JavaScript-Bibliothek verwenden. Dies wird in der Regel der automatische Vervollständigung in der JS-Bibliothek genannt. Es ist YUI die automatische Vervollständigung und Scriptaculous die automatische Vervollständigung für Vorspeisen, und wahrscheinlich viel mehr JavaScript zur automatischen Vervollständigung Implementierungen gibt. Plone verwendet KSS es JavaScript-Bibliothek ist, die KSS Livesearch Plugin ist ein guter Anfang, wenn zum Beispiel Code suchen aus zupfen.

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

Und eine Anleitung zur Verwendung von KSS mit Django:

http://kssproject.org/docs / tutorial / kss-in-django-mit-kss-django-Anwendung

KSS ist ganz nett, da es sauber Verhalten von Inhalten auf der Client-Seite trennt (ohne dass JavaScript schreiben), aber Scriptaculous ist vom Konzept her ein wenig einfacher und hat etwas bessere Dokumentation ( http://github.com/madrobby/scriptaculous/wikis/ajax-autocompleter ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top