Refactor search view to improve query handling and pagination logic
This commit is contained in:
parent
653847df6a
commit
97ddd2dfd1
@ -2,6 +2,7 @@ from urllib.parse import urlencode
|
||||
|
||||
from django.core.paginator import Paginator
|
||||
from django.template.response import TemplateResponse
|
||||
from django.db.models import Q
|
||||
|
||||
from wagtail.models import Site
|
||||
|
||||
@ -16,12 +17,17 @@ def search(request):
|
||||
results_count = 0
|
||||
|
||||
if search_query:
|
||||
search_queryset = ArticlePage.objects.live().search(search_query)
|
||||
paginator = Paginator(search_queryset, PAGE_SIZE)
|
||||
results_page = paginator.get_page(page_number)
|
||||
results_count = paginator.count
|
||||
primary_qs = ArticlePage.objects.live().search(search_query)
|
||||
results_count = primary_qs.count()
|
||||
|
||||
if not results_count:
|
||||
fallback_filter = Q(intro__icontains=search_query) | Q(body__icontains=search_query)
|
||||
primary_qs = ArticlePage.objects.live().filter(fallback_filter).order_by("-date")
|
||||
results_count = primary_qs.count()
|
||||
|
||||
if results_count:
|
||||
paginator = Paginator(primary_qs, PAGE_SIZE)
|
||||
results_page = paginator.get_page(page_number)
|
||||
query_string = urlencode({"query": search_query})
|
||||
category_sections = [
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user