You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
961 B
Python
36 lines
961 B
Python
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
|
|
from django.shortcuts import render
|
|
|
|
from wagtail.core.models import Page
|
|
from wagtail.search.models import Query
|
|
|
|
|
|
def search(request):
|
|
search_query = request.GET.get("query", None)
|
|
page = request.GET.get("page", 1)
|
|
|
|
# Search
|
|
if search_query:
|
|
search_results = Page.objects.live().search(search_query)
|
|
query = Query.get(search_query)
|
|
|
|
# Record hit
|
|
query.add_hit()
|
|
else:
|
|
search_results = Page.objects.none()
|
|
|
|
# Pagination
|
|
paginator = Paginator(search_results, 10)
|
|
try:
|
|
search_results = paginator.page(page)
|
|
except PageNotAnInteger:
|
|
search_results = paginator.page(1)
|
|
except EmptyPage:
|
|
search_results = paginator.page(paginator.num_pages)
|
|
|
|
return render(
|
|
request,
|
|
"search/search.html",
|
|
{"search_query": search_query, "search_results": search_results},
|
|
)
|