Ejemplo n.º 1
0
Archivo: views.py Proyecto: tmyyss/Blog
def search(request):
	mblogs=Blog.objects.all().order_by('-visitors')[:5]
	keywords=request.GET['q']
	keywords.encode('gb2312')
	sform=SearchForm(request.GET)
	blogs=sform.search()
	return render(request,'blog/search.html',{'mblogs':mblogs,'blogs':blogs,'list_header':'关键字\'{}\'搜索结果'.format(keywords)})
Ejemplo n.º 2
0
def search(request):

    sqs = SearchQuerySet().models(Method)

    if request.GET.get('q'):

        form = SearchForm(request.GET, searchqueryset=sqs)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            paginator = Paginator(results, 10)

            try:
                page = paginator.page(int(request.GET.get('page', 1)))
            except InvalidPage:
                raise Http404("No such page of results!")

    else:
        form = SearchForm(searchqueryset=sqs)
        paginator = None
        page = None
        query = request.GET.get('q')
    
    
    context = {
        'form': form,
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
    }
    
    return render_to_response('search/method_search.html', context, context_instance=RequestContext(request))
Ejemplo n.º 3
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    sform = SearchForm(request.GET)
    posts = sform.search()
    return render(request, 'blog/post_search_list.html',
                  {'posts': posts, 'list_header': '关键字 \'{}\' 搜索结果'.format(keywords)})
Ejemplo n.º 4
0
def full_search(request):
    sform = SearchForm(request.GET)

    posts = sform.search()
    template = 'defaule/app/search-text.html'
    c = Context({'posts': posts})
    return render_to_response(template, c)
Ejemplo n.º 5
0
def bids(request):
    context = {}
    #### TOP ####
    bids = Bid.objects.filter(_status__exact='C')
    top_answers = []
    for bid in bids:
        try:
            top_answers.append(Answer.objects.filter(bid=bid.id).order_by('price')[0])
        except:
            pass
    context['top_answers'] = top_answers

    #### ALL_BIDS ####
    bids = Bid.objects.all()
    context["bids"] = bids

    #### SEARCH ####!
    from haystack.forms import SearchForm
    form = SearchForm(request.GET)
    query = form.search()

    try:
        if request.GET["q"]:
            context["is_search"] = True
    except:
        pass

    context["form"] = form
    context["query"] = query

    bid_form = bid_create(request, True)
    #if request.method == "POST"
    context["bid_form"] = bid_form

    return render(request, "core/bids.html", context)
Ejemplo n.º 6
0
def search(request):
    """Simple search tool"""
    context = get_context(request)
    context['simple_query'] = get_simple_query(request)

    if 'q' not in request.GET:
        return redirect('/')

    query = request.GET['q'].strip()
    if query == '':
        return redirect('/')

    form = SearchForm(request.GET)
    page = request.GET.get('page')
    if settings.ELASTICSEARCH is True:
        sqs = form.search()
        sqs.spelling_suggestion()
        results = ""
        paginator = ""
        if sqs:
            paginator = Paginator(sqs, 25)
            try:
                results = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                results = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                results = paginator.page(paginator.num_pages)

        context['page'] = results
        context['paginator'] = paginator
        context['results'] = results
        context['voucher_code_list'] = get_voucher_code_list(sqs)
        context['url_encoded_query'] = get_correct_url_query(
            request.GET.urlencode())
        context['result_count'] = len(sqs)
        return render(request, 'public_interface/search_results.html', context)
    else:
        sqs = Vouchers.objects.filter(
            Q(orden__icontains=query) | Q(genus__icontains=query)
            | Q(species__icontains=query) | Q(code__icontains=query), )
        results = ""
        paginator = ""
        if sqs:
            paginator = Paginator(sqs, 25)
            try:
                results = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                results = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                results = paginator.page(paginator.num_pages)
        context["result_count"] = sqs.count()
        context['page'] = results
        context['paginator'] = paginator
        context['results'] = results
        return render(request, 'public_interface/search_results.html', context)
Ejemplo n.º 7
0
def search(request):
    form = SearchForm(request.GET or None)
    posts = None
    if form.data != {} and form.is_valid():
        posts = form.search()
    return render_to_response('search/search.html', {
        'posts': posts
    }, context_instance=RequestContext(request))
Ejemplo n.º 8
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET["q"]
    sform = SearchForm(request.GET)
    posts = sform.search()
    return render(
        request, "blog/post_search_list.html", {"posts": posts, "list_header": "关键字 '{}' 搜索结果".format(keywords)}
    )
Ejemplo n.º 9
0
 def test_unbound(self):
     sf = SearchForm({}, searchqueryset=self.sqs)
     
     self.assertEqual(sf.errors, {})
     self.assertEqual(sf.is_valid(), True)
     
     # This shouldn't blow up.
     sqs = sf.search()
     self.assertTrue(isinstance(sqs, EmptySearchQuerySet))
Ejemplo n.º 10
0
    def test_unbound(self):
        sf = SearchForm({}, searchqueryset=self.sqs)

        self.assertEqual(sf.errors, {})
        self.assertEqual(sf.is_valid(), True)

        # This shouldn't blow up.
        sqs = sf.search()
        self.assertTrue(isinstance(sqs, EmptySearchQuerySet))
Ejemplo n.º 11
0
def search(request):
    results = EmptySearchQuerySet()
    query = request.GET.get('q')
    if query:
        form = SearchForm(request.GET)
        if form.is_valid():
            results = form.search()
    else:
       form = SearchForm()
    return render(request, 'search/search.html', {'form':form, 'results':results, 'query':query})
Ejemplo n.º 12
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    # 搜索的关键词为用户输入的变量q,该变量是通过前端页面获取的,templates/blog/base.html中32行代码
    sform = SearchForm(request.GET)
    # 搜索表单
    posts = sform.search()
    # 定义搜索对象
    return render(request, 'blog/post_search_list.html',
                  {'posts': posts, 'list_header': '关键字 \'{}\' 搜索结果'.format(keywords)})
Ejemplo n.º 13
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    if keywords:
        sform = SearchForm(request.GET)
        posts = sform.search()
        return render(request, 'qs/post_search_list.html',
                      {'posts': posts, 'list_header': '关键字 \'{}\' 搜索结果'.format(keywords)})
    else:
        return redirect('index')
Ejemplo n.º 14
0
def search_blog(request):
    rs = request.GET['q']
    # print(rs)
    form = SearchForm(request.GET)
    res = form.search()
    # res = SearchQuerySet().models(ckeditorBlog).filter(content=rs).load_all()
    # print(res)
    # for i in posts:
    #     print(i)
    # print(posts)
    return render(request, 'search/search.html', {'res': res})
Ejemplo n.º 15
0
def full_text_search(request):
    keyword = request.GET['q']
    sform = SearchForm(request.GET)
    blogs = sform.search()
    print(blogs.all())
    for t in blogs.all():
        print(t)
    return render(request, 'searchResult.html', {
        "blogs": blogs.all(),
        'list_header': '关键字 \'{}\' '.format(keyword)
    })
Ejemplo n.º 16
0
def full_search(request):
	"""全局搜索"""
	keywords = request.GET['q']
	sform = SearchForm(request.GET)
	posts = sform.search()
	print '------start'
	for post in posts:
		print post.title
		print 'you'
	print '-------end'
	return render(request, 'blog/post_search_list.html',
		{'posts': posts, 'list_header':'关键字\'{}\'搜索结果'.format(keywords)})
Ejemplo n.º 17
0
def post_search(request):
    form = SearchForm()
    search_dict =None
    if 'q' in request.GET:
        form = SearchForm(request.GET)
        cd = request.GET['q']
        posts = form.search()

        total_results = posts.count()
        search_dict = {'posts': posts, 'keyword': cd, 'total_results': total_results, 'form': form,}


    return render(request, 'blog/post/search.html', search_dict)
Ejemplo n.º 18
0
def process_query(query, email):
    """Function for processing of a request and sending email with results
    using celery"""
    form = SearchForm({'q': query})
    # Launch searching
    books = form.search()
    # sending email with results
    subject = 'Results of books searching'
    html_content = render_to_string('books/results_email.html', {
        'query': query,
        'books': books,
    })
    text_content = strip_tags(html_content)
    send_mail(subject,
              text_content,
              settings.DEFAULT_FROM_EMAIL, [email],
              fail_silently=True,
              html_message=html_content)
Ejemplo n.º 19
0
 def get_queryset(self):
     query = ''
     results = []
     
     if self.request.QUERY_PARAMS.get('q'):
         # limit searchqueryset to appropriate model
         searchqueryset = SearchQuerySet().models(self.model)
         # then perform a search on specific model.
         form = SearchForm(self.request.QUERY_PARAMS, 
                           searchqueryset=searchqueryset, load_all=True)
         if form.is_valid():
             query = form.cleaned_data['q']
             results = form.search()
             results = self.filter_results(results)
             # for odd reasons there are duplicates in the haystack results.
             results = list_dedup([r.object for r in results])
     
     return results
Ejemplo n.º 20
0
def search(request):
    """Simple search tool"""
    context = get_context(request)
    if 'q' not in request.GET:
        return redirect('/')

    query = request.GET['q'].strip()
    if query == '':
        return redirect('/')

    form = SearchForm(request.GET)
    page = request.GET.get('page')
    if settings.ELASTICSEARCH is True:
        sqs = form.search()
        sqs.spelling_suggestion()
        results = ""
        paginator = ""
        if sqs:
            paginator = Paginator(sqs, 25)
            try:
                results = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                results = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                results = paginator.page(paginator.num_pages)

        context['page'] = results
        context['paginator'] = paginator
        context['results'] = results
        context['voucher_code_list'] = get_voucher_code_list(sqs)
        context['simple_query'] = get_simple_query(request)
        context['url_encoded_query'] = get_correct_url_query(request.GET.urlencode())
        context['result_count'] = len(sqs)
        return render(request, 'public_interface/search_results.html', context)
    else:
        sqs = Vouchers.objects.filter(
            Q(genus__icontains=query) | Q(species__icontains=query) | Q(code__icontains=query),
        )
        context["result_count"] = len(sqs)
        context["page"] = {'object_list': sqs}
        return render(request, 'public_interface/search_results.html', context)
Ejemplo n.º 21
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    form = SearchForm(request.GET)
    articles = form.search()

    try:
        page = request.GET.get('page', 1)
    except PageNotAnInteger:
        page = 1

    p = Paginator(articles, 1, request=request)
    articles = p.page(page)
    return render(request,
                  'home/article_search_list.html',
                  context={
                      'articles': articles,
                      'keywords': '关键字 \'{}\' 搜索结果'.format(keywords)
                  })
Ejemplo n.º 22
0
def search(request):
    """Simple search tool"""
    if 'q' not in request.GET:
        return redirect('/')

    query = request.GET['q'].strip()
    if query == '':
        return redirect('/')

    form = SearchForm(request.GET)
    sqs = form.search()
    sqs.spelling_suggestion()

    search_view = VoSeqSearchView(
        template='public_interface/search_results.html',
        searchqueryset=sqs,
        form_class=SearchForm,
        url_encoded_query=request.GET.urlencode(),
    )
    search_view.__call__(request)
    return search_view.create_response()
Ejemplo n.º 23
0
def search_helper(request, searchqueryset, pagination_function):
    """
    Description: Helper function by searching
                 Based off haystack.views.basic_search()
                   
    Arguments:   - request:             HttpRequest object
                 - searchqueryset:      SearchQuerySet limited to a model by
                                        calling SearchQuerySet().models()
                 - pagination_function: Helper function for use in paginating
                                        the search results
    Return:      Dictionary with keys coming from pagination_function. Two
                 New keys will be added to it:
                 - query:      search query
                 - suggestion: backend-suggested search query
    
    Author:      Nnoduka Eruchalu
    """
    query = ''
    results = EmptySearchQuerySet()
    suggestion = False
    search_list = []

    if request.GET.get('q'):
        form = SearchForm(request.GET,
                          searchqueryset=searchqueryset,
                          load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            # for odd reasons there are duplicates in the haystack results...
            search_list = list_dedup([r.object for r in results])

        if results.query.backend.include_spelling:
            suggestion = form.get_suggestion()

    context = pagination_function(request, search_list)
    context['query'] = query
    context['suggestion'] = suggestion
    return context
Ejemplo n.º 24
0
def search_helper(request, searchqueryset, pagination_function):
    """
    Description: Helper function by searching
                 Based off haystack.views.basic_search()
                   
    Arguments:   - request:             HttpRequest object
                 - searchqueryset:      SearchQuerySet limited to a model by
                                        calling SearchQuerySet().models()
                 - pagination_function: Helper function for use in paginating
                                        the search results
    Return:      Dictionary with keys coming from pagination_function. Two
                 New keys will be added to it:
                 - query:      search query
                 - suggestion: backend-suggested search query
    
    Author:      Nnoduka Eruchalu
    """
    query = ''
    results = EmptySearchQuerySet()
    suggestion = False
    search_list = []
    
    if request.GET.get('q'):
        form = SearchForm(request.GET, searchqueryset=searchqueryset,
                          load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            # for odd reasons there are duplicates in the haystack results...
            search_list = list_dedup([r.object for r in results])
                                    
        if results.query.backend.include_spelling:
            suggestion = form.get_suggestion()
                        
    context = pagination_function(request, search_list)
    context['query'] = query
    context['suggestion'] = suggestion
    return context
Ejemplo n.º 25
0
def search_all(request):
    rs = request.GET.get('q', False)
    form = SearchForm(request.GET)
    searchResult = form.search()
    # print(searchResult.query)
    # for i in posts:
    #     print(i.object.title)
    paginator = Paginator(searchResult, 6)
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    studyNotes = studyNote.objects.all()
    ckeditorBlogs = ckeditorBlog.objects.all()
    return render(
        request, 'search/search_result.html', {
            'posts': posts,
            'rs': rs,
            'studyNotes': studyNotes,
            'ckeditorBlogs': ckeditorBlogs
        })
Ejemplo n.º 26
0
def search(request):
    """ Returns messages corresponding to a query """
    mlist_fqdn = request.GET.get("mlist")
    if mlist_fqdn is None:
        mlist = None
    else:
        try:
            mlist = MailingList.objects.get(name=mlist_fqdn)
        except MailingList.DoesNotExist:
            raise Http404("No archived mailing-list by that name.")
        if not is_mlist_authorized(request, mlist):
            return render(request, "hyperkitty/errors/private.html", {
                            "mlist": mlist,
                          }, status=403)


    query = ''
    results = EmptySearchQuerySet()
    sqs = RelatedSearchQuerySet()

    # Remove private non-subscribed lists
    if mlist is not None:
        sqs = sqs.filter(mailinglist__exact=mlist.name)
    else:
        excluded_mlists = MailingList.objects.filter(
            archive_policy=ArchivePolicy.private.value)
        if request.user.is_authenticated():
            subscriptions = request.user.hyperkitty_profile.get_subscriptions()
            excluded_mlists = excluded_mlists.exclude(
                name__in=subscriptions.keys())
        excluded_mlists = excluded_mlists.values_list("name", flat=True)
        sqs = sqs.exclude(mailinglist__in=excluded_mlists)

    # Sorting
    sort_mode = request.GET.get('sort')
    if sort_mode == "date-asc":
        sqs = sqs.order_by("date")
    elif sort_mode == "date-desc":
        sqs = sqs.order_by("-date")

    # Handle data
    if request.GET.get('q'):
        form = SearchForm(
            request.GET, searchqueryset=sqs, load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = SearchForm(searchqueryset=sqs, load_all=True)

    messages = paginate(results, page_num=request.GET.get('page'))
    for message in messages:
        if request.user.is_authenticated():
            message.object.myvote = message.object.votes.filter(user=request.user).first()
        else:
            message.object.myvote = None


    context = {
        'mlist' : mlist,
        'form': form,
        'messages': messages,
        'query': query,
        'sort_mode': sort_mode,
        'suggestion': None,
    }
    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    return render(request, "hyperkitty/search_results.html", context)
Ejemplo n.º 27
0
def search(request):
    """
    Description: Handles requests from site's search bar
                 Based off haystack.views.basic_search()
                   
    Arguments:   request: HttpRequest object
    Return:      HttpResponse object showing search results with following 
                 additional details
                 - query:      search query
                 - suggestion: backend-suggested search query
    
    Author:      Nnoduka Eruchalu
    """
    query = ""
    results = EmptySearchQuerySet()
    suggestion = False

    if request.GET.get("q"):
        form = SearchForm(request.GET, searchqueryset=None, load_all=True)
        if form.is_valid():
            query = form.cleaned_data["q"]
            results = form.search()

        if results.query.backend.include_spelling:
            suggestion = form.get_suggestion()

    search_list = [r.object for r in results]

    paginator = Paginator(search_list, settings.RESULTS_PER_PAGE)

    page = request.GET.get("page")
    try:
        results = paginator.page(page)
    except PageNotAnInteger:
        # if page is not an integer, deliver first page.
        results = paginator.page(1)
    except EmptyPage:
        # if page is out of range (e.g. 999), deliver last page of results
        results = paginator.page(paginator.num_pages)

    if results.has_next():
        next_page_num = results.next_page_number()
    else:
        next_page_num = 0  # way of indicating no more pages... 1 index'd helped!

    if results.has_previous():
        prev_page_num = results.previous_page_number()
    else:
        prev_page_num = 0

    results = results.object_list

    return render_to_response(
        "search/search.html",
        {
            "query": query,
            "suggestion": suggestion,
            "results": results,
            "next_page": next_page_num,
            "prev_page": prev_page_num,
        },
        context_instance=RequestContext(request),
    )
Ejemplo n.º 28
0
def search(request):
    """ Returns messages corresponding to a query """
    mlist_fqdn = request.GET.get("mlist")
    if mlist_fqdn is None:
        mlist = None
    else:
        try:
            mlist = MailingList.objects.get(name=mlist_fqdn)
        except MailingList.DoesNotExist:
            raise Http404("No archived mailing-list by that name.")
        if not is_mlist_authorized(request, mlist):
            return render(request, "hyperkitty/errors/private.html", {
                            "mlist": mlist,
                          }, status=403)


    query = ''
    results = EmptySearchQuerySet()
    sqs = RelatedSearchQuerySet()

    # Remove private non-subscribed lists
    if mlist is not None:
        sqs = sqs.filter(mailinglist__exact=mlist.name)
    else:
        excluded_mlists = MailingList.objects.filter(
            archive_policy=ArchivePolicy.private.value)
        if request.user.is_authenticated():
            subscriptions = request.user.hyperkitty_profile.get_subscriptions()
            excluded_mlists = excluded_mlists.exclude(
                list_id__in=subscriptions.keys())
        excluded_mlists = excluded_mlists.values_list("name", flat=True)
        sqs = sqs.exclude(mailinglist__in=excluded_mlists)

    # Sorting
    sort_mode = request.GET.get('sort')
    if sort_mode == "date-asc":
        sqs = sqs.order_by("date")
    elif sort_mode == "date-desc":
        sqs = sqs.order_by("-date")

    # Handle data
    if request.GET.get('q'):
        form = SearchForm(
            request.GET, searchqueryset=sqs, load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = SearchForm(searchqueryset=sqs, load_all=True)

    emails = paginate(results, page_num=request.GET.get('page'))
    for email in emails:
        if request.user.is_authenticated():
            email.object.myvote = email.object.votes.filter(user=request.user).first()
        else:
            email.object.myvote = None


    context = {
        'mlist' : mlist,
        'form': form,
        'emails': emails,
        'query': query,
        'sort_mode': sort_mode,
        'suggestion': None,
    }
    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    return render(request, "hyperkitty/search_results.html", context)
Ejemplo n.º 29
0
Archivo: views.py Proyecto: xfsysu/cms
def full_search(request):
    sform = SearchForm(request.GET)
    members = sform.search()
    return render(request, 'union/full_search.html', {'members': members})
Ejemplo n.º 30
0
def get_haystack_results(request):
    hs_form = SearchForm(request.GET)
    if hs_form.is_valid():
        return hs_form.search()
    return []
Ejemplo n.º 31
0
def Search(request):
    form = SearchForm(request.GET)
    results = form.search()
    return render_to_response('search/search.html', {'results': results})
def notes(request):
    form = SearchForm(request.GET)
    notes = form.search()
    return render_to_response('notes.html', {'notes': notes})
Ejemplo n.º 33
0
def search(request):
    """ Returns messages corresponding to a query """
    mlist_fqdn = request.GET.get("mlist")
    if mlist_fqdn is None:
        mlist = None
    else:
        try:
            mlist = MailingList.objects.get(name=mlist_fqdn)
        except MailingList.DoesNotExist:
            raise Http404("No archived mailing-list by that name.")
        if not is_mlist_authorized(request, mlist):
            return render(request,
                          "hyperkitty/errors/private.html", {
                              "mlist": mlist,
                          },
                          status=403)
    query = ''
    results = EmptySearchQuerySet()
    sqs = RelatedSearchQuerySet()

    # Remove private non-subscribed lists
    if mlist is not None:
        sqs = sqs.filter(mailinglist__exact=mlist.name)
    else:
        excluded_mlists = MailingList.objects.filter(
            archive_policy=ArchivePolicy.private.value)
        if request.user.is_authenticated:
            subscriptions = get_subscriptions(request.user)
            excluded_mlists = excluded_mlists.exclude(
                list_id__in=subscriptions.keys())
        excluded_mlists = excluded_mlists.values_list("name", flat=True)
        sqs = sqs.exclude(mailinglist__in=excluded_mlists)

    # Sorting
    sort_mode = request.GET.get('sort')
    if sort_mode == "date-asc":
        sqs = sqs.order_by("date")
    elif sort_mode == "date-desc":
        sqs = sqs.order_by("-date")

    # Handle data
    if request.GET.get('q'):
        form = SearchForm(request.GET, searchqueryset=sqs, load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = SearchForm(searchqueryset=sqs, load_all=True)

    try:
        emails = paginate(
            results,
            request.GET.get('page'),
            request.GET.get('count'),
        )
    except Exception as e:
        backend = settings.HAYSTACK_CONNECTIONS[DEFAULT_ALIAS]["ENGINE"]
        if backend == "haystack.backends.whoosh_backend.WhooshEngine":
            from whoosh.qparser.common import QueryParserError
            search_exception = QueryParserError
        if backend == "xapian_backend.XapianEngine":
            from xapian import QueryParserError
            search_exception = QueryParserError
        if not isinstance(e, search_exception):
            raise
        emails = paginate([])
        form.add_error(
            "q",
            ValidationError(
                _('Parsing error: %(error)s'),
                params={"error": e},
                code="parse",
            ))
    for email in emails:
        if request.user.is_authenticated:
            email.object.myvote = email.object.votes.filter(
                user=request.user).first()
        else:
            email.object.myvote = None

    context = {
        'mlist': mlist,
        'form': form,
        'emails': emails,
        'query': query,
        'sort_mode': sort_mode,
        'suggestion': None,
    }
    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    return render(request, "hyperkitty/search_results.html", context)