1. 程式人生 > >Django 分頁的實現

Django 分頁的實現

span bject ont filter 上一頁 分頁 previous number def

一、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>

Django 分頁的實現