문제

Plone에는 사이트에 대한 기능과 같은 "Google 제안" 기능을 갖춘 아름다운 검색 상자가 있습니다.PDF와 같은 업로드된 문서의 색인도 생성합니다.Django 사이트에서 이런 종류의 기능을 제공할 수 있는 모듈을 아는 사람이 있나요?

도움이 되었습니까?

해결책

Plone은 색인화된 속성의 별도 메타데이터 테이블을 유지 관리하여 LiveSearch 기능을 구현합니다(마지막 수정, 작성자, 제목과 같은 필드는 콘텐츠 개체에서 이 테이블로 복사됩니다).그런 다음 콘텐츠 개체는 ObjectAdded/ObjectModified/ObjectRemoved 이벤트를 보내고, 이벤트 구독자는 이러한 이벤트를 수신하고 메타데이터 테이블을 업데이트하는 일을 담당합니다(Django에서는 이벤트를 신호라고 합니다).그런 다음 메타데이터를 검색하고 적절한 LiveSearch HTML을 반환하는 고정 URL에 노출된 브라우저 보기가 있으며, 마지막으로 각 HTML 페이지에 적절한 JavaScript가 전송되어 자동 완성 AJAX 기능을 처리하여 이 보기를 쿼리하고 결과 HTML 결과를 DOM.

LiveSearch가 여러 모델/콘텐츠 유형을 쿼리하도록 하려면 자체 이벤트를 보내고 구독자가 적절하게 처리하도록 해야 할 것입니다.이는 단일 검색에 대해 여러 쿼리를 수행해도 성능 저하가 문제가 되지 않는(또는 단일 콘텐츠 유형만 검색하려는 경우) 소규모 데이터 세트나 트래픽이 낮은 사이트에는 필요하지 않으며 여러 쿼리를 수행하기만 하면 됩니다. 귀하의 뷰에서 쿼리합니다.

JavaScript 측면에서는 직접 사용하거나 기존 JavaScript 라이브러리를 사용할 수 있습니다.이를 일반적으로 JS 라이브러리에서는 자동 완성이라고 합니다.초보자를 위한 YUI 자동 완성 및 Scriptaculous 자동 완성이 있으며, 더 많은 JavaScript 자동 완성 구현이 있을 것입니다.Plone은 JavaScript 라이브러리로 KSS를 사용합니다. KSS livesearch 플러그인은 뽑아낼 예제 코드를 찾는 경우 시작하기에 좋은 장소입니다.

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).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top