pip install django-haystack pip install elasticsearch pip install whoosh python INSTALLED_APPS = [ ... 'haystack', ... ] python HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', }, } python HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', }, } python from django.db import models from django.utils import timezone from haystack import indexes class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(default=timezone.now) class ArticleIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) def get_model(self): return Article def index_queryset(self, using=None): return self.get_model().objects.all() python from django.shortcuts import render from haystack.query import SearchQuerySet def search(request): q = request.GET.get('q', '') articles = SearchQuerySet().filter(text=q) return render(request, 'search.html', {'articles': articles, 'query': q}) html {% for article in articles %} <h2>{{ article.object.title }}</h2> <p>{{ article.object.content }}</p> <hr> {% empty %} <p>No articles found.</p> {% endfor %} python from django.urls import path from .views import search urlpatterns = [ path('search/', search, name='search'), ]


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