Я просто попытался добавить paginator для своей страницы результатов поиска, но это не сработало.У меня есть 10 статей в результатах поиска, и я установил 3 для каждой страницы, что означает, что список результатов будет разделен на 4 страницы.Однако, когда я искал ключевые слова, он показывал все 10 статей на одной странице, и пагинатор не работал.
My view.py is:
def search_titles(request):
q = request.GET.get('q')
error_msg = ''
if not q:
error_msg = 'Please enter keywords!'
return render(request, 'search_results.html', {'error_msg': error_msg})
else:
nq = q.split(' ')
a_list = Q(article_ti__icontains=nq[0]) | Q(article_content__icontains=nq[0]) | Q(
abstract__icontains=nq[0]) | Q(
author__icontains=nq[0])
for i in nq[1:]:
a_list.add(Q(article_ti__icontains=i) | Q(article_content__icontains=i) | Q(abstract__icontains=i) | Q(author__icontains=i), a_list.connector)
queryset = Article.objects.filter(a_list).distinct()
queryset_count = queryset.count()
paginator = Paginator(queryset, 3)
page_var = 'page'
page = request.GET.get(page_var, 1)
try:
sets = paginator.page(page)
except PageNotAnInteger:
sets = paginator.page(1)
except EmptyPage:
sets = paginator.page(paginator.num_pages)
return render(request, 'search_results.html', {'error_msg': error_msg, 'b_list': queryset, 'a_list_count': queryset_count, 'sets': sets, 'page_var':page_var})
мой HTML код:
<div class="ui text container">
{% if error_msg %}
<p>{{ error_msg }}</p>
{% else %}
{% for a in b_list %}
<div class="ui segment">
<a target="_blank" href={{ a.get_abs_url }}>
<h3>{{ a.article_ti }}</h3>
<h5>{{ a.author }}</h5>
<p>{{ a.abstract }}</p>
</a>
</div>
{% empty %}
<div class="ui segment">No results for '{{ request.GET.q }}'</div>
{% endfor %}
{% endif %}
</div>
<div class="pagination" id="m">
<span class="step-links">
{% if sets.has_previous %}
<a href="?{{ page_var }}=1&q={{ request.GET.q }}" title="First"><<</a>
<a href="?{{ page_var }}={{ sets.previous_page_number }}&q={{ request.GET.q }}" title="Previous"><</a>
{% endif %}
<span class="current"><input name="enter_page" value="{{ sets.number }}" id="page_num"> of {{ sets.paginator.num_pages }}</span>
{% if sets.has_next %}
<a href="?{{ page_var }}={{ sets.next_page_number }}&q={{ request.GET.q }}" title="Next">></a>
<a href="?{{ page_var }}={{ sets.paginator.num_pages }}&q={{ request.GET.q }}" title="Last">>></a>
{% endif %}
</span>
</div>
Я пробовал несколько методов на стеке потока, но все еще не работает.Кто-нибудь может дать мне несколько советов?
Буду очень признателен, если вы сможете мне помочь!