【发布时间】:2020-05-01 21:22:21
【问题描述】:
我能够从搜索结果中显示的所有类别中获取我的所有项目,现在我必须在我的搜索结果中为已搜索的类别中的所有项目添加分页器。如何在搜索结果上实现分页器以显示分页类别中的所有项目?使用下面的代码,搜索结果不会正确地对所有项目类别进行分页。我不知道 itertool 是否会是一个更好的主意。
def search_result(request):
query = request.GET.get('q')
if query is None:
return redirect("shop:homepage")
else:
item = Item.objects.all().order_by("timestamp")
if item:
item = item.filter(
Q(title__icontains=query)
).distinct()
if item.count() == 0:
messages.error(request, "No search results found")
paginator = Paginator(item, 1)
page = request.GET.get('page')
try:
queryset = paginator.get_page(page)
except PageNotAnInteger:
queryset = paginator.get_page(1)
except EmptyPage:
queryset = paginator.get_page(paginator.num_pages)
context = {
'search': item,
'pagination': queryset,
'query': query,
}
return render(request, 'search_result.html', context)
<nav class="my-4 flex-center" style="font-weight:400">
{% if pagination.has_other_pages %}
<ul class="pagination pagination-circle pg-blue mb-0">
{% if pagination.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ pagination.previous_page_number }}" aria-label="Previous">
<span aria-hidden="true">Previous</span>
<span class="sr-only">Previous</span>
</a>
</li>
{% endif %}
{% for i in pagination.paginator.page_range %}
{% if pagination.number == i %}
<li class="page-item active"><span class="page-link">{{ i }} <span class="sr-only">(current)</span></span></li>
{% else %}
<li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if pagination.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ pagination.next_page_number }}"aria-label="Next">
<span aria-hidden="true">Next</span>
<span class="sr-only">Next</span>
</a>
</li>
{% endif %}
</ul>
{% endif %}
</nav>
【问题讨论】:
-
@naveen 当类别中的项目出现时,然后我在分页中单击 int 2,它带我回到主页。
标签: python django pagination paginator