Django 分页的实现

一、views.py

 1 class ListView(View):
 2     """列表"""
 3     def get(self, request, type_id, page):
 4         """显示列表"""
 5         goods_list = GoodsSKU.objects.filter(type=type_id)
 6         paginator = Paginator(goods_list, 1)
 7         goods_list_page = paginator.page(page)
 8 
 9         num_pages = paginator.num_pages
10         if num_pages < 5:
11             pages = range(1, num_pages + 1)
12         elif page <= 3:
13             pages = range(1, 6)
14         elif num_pages - page <= 2:
15             pages = range(num_pages - 4, num_pages + 1)
16         else:
17             pages = range(page - 2, page + 3)
18 
19         content = {
20             'goods_list_page': goods_list_page,
21             'type_id': type_id,
22             'pages': pages,
23         }
24         return render(request, 'list.html', content)

二、list.html

 1 <div class="pagenation">
 2     {% if goods_list_page.has_previous %}
 3         <a href="{% url 'goods:list' type_id goods_list_page.previous_page_number  %}?sort={{ sort }}"><上一页</a>
 4     {% endif %}
 5     {% for page_index in pages %}
 6         {% if page_index == goods_list_page.number %}
 7             <a href="{% url 'goods:list' type_id page_index %}?sort={{ sort }}" class="active">{{ page_index }}</a>
 8         {% else %}
 9             <a href="{% url 'goods:list' type_id page_index %}?sort={{ sort }}" >{{ page_index }}</a>
10         {% endif %}
11     {% endfor %}
12     {% if goods_list_page.has_next %}
13         <a href="{% url 'goods:list' type_id goods_list_page.next_page_number  %}?sort={{ sort }}"><下一页</a>
14     {% endif %}
15 </div>
原文地址:https://www.cnblogs.com/mxsf/p/10347798.html