diff options
Diffstat (limited to 'search/views.py')
-rw-r--r-- | search/views.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/search/views.py b/search/views.py new file mode 100644 index 0000000..eeace7c --- /dev/null +++ b/search/views.py @@ -0,0 +1,34 @@ +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, + }) |