views.py 953 B

1234567891011121314151617181920212223242526272829303132333435
  1. from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
  2. from django.shortcuts import render
  3. from wagtail.core.models import Page
  4. from wagtail.search.models import Query
  5. def search(request):
  6. search_query = request.GET.get('query', None)
  7. page = request.GET.get('page', 1)
  8. # Search
  9. if search_query:
  10. search_results = Page.objects.live().search(search_query)
  11. query = Query.get(search_query)
  12. # Record hit
  13. query.add_hit()
  14. else:
  15. search_results = Page.objects.none()
  16. # Pagination
  17. paginator = Paginator(search_results, 10)
  18. try:
  19. search_results = paginator.page(page)
  20. except PageNotAnInteger:
  21. search_results = paginator.page(1)
  22. except EmptyPage:
  23. search_results = paginator.page(paginator.num_pages)
  24. return render(request, 'search/search.html', {
  25. 'search_query': search_query,
  26. 'search_results': search_results,
  27. })