pip install django-haystack python HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 'URL': 'http://localhost:9200/', 'INDEX_NAME': 'my_project_index', }, } python from haystack import indexes from myapp.models import MyModel class MyModelIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) def get_model(self): return MyModel def index_queryset(self, using=None): return self.get_model().objects.all() python from django.urls import path from haystack.views import SearchView urlpatterns = [ path('search/', SearchView(), name='haystack_search'), ] python from django import forms class SearchForm(forms.Form): query = forms.CharField(label='Search') python from django.shortcuts import render from haystack.query import SearchQuerySet def search(request): form = SearchForm(request.GET) results = [] if form.is_valid(): query = form.cleaned_data['query'] results = SearchQuerySet().filter(content=query) return render(request, 'search.html', {'form': form, 'results': results}) html <form method="get" action="{% url 'haystack_search' %}"> {{ form.as_p }} <button type="submit">Search</button> </form> {% if results.count > 0 %} <ul> {% for result in results %} <li>{{ result.object }}</li> {% endfor %} </ul> {% else %} <p>No results found.</p> {% endif %}


上一篇:
下一篇:
切换中文