Django - Pagination分页

作者: 廖马儿 | 来源:发表于2017-08-17 17:07 被阅读63次

    分页示例:

    在views.py中:
    
    from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
    
    
    def ProductList(request):
    
        data = getData()
    
        winery = models.Winery.objects.all().order_by("-id") # 以id倒序
    
        paginator = Paginator(winery, 3) # 3个为一页
        page = request.GET.get('page')
    
        try:
            wine = paginator.page(page)
        except PageNotAnInteger:  # page不是integer
            wine = paginator.page(1)
        except EmptyPage:   # 如果传递的page不在我们的分页范围中
            wine = paginator.page(paginator.num_pages)
    
        data["winery"] = wine 
    
        return render(request, 'productlist.html',  {'data':data})
    
    # 在模板中
    
     <div class="pagination ">
            <span class="step-links">
                {% if data.winery.has_previous %}
                <a href="?page={{ data.winery.previous_page_number }}">上一页</a>
                {% endif %}
                 
                <span class="current ">
                    第{{ data.winery.number }}页,共{{ data.winery.paginator.num_pages }}页
                </span>
                {% if data.winery.has_next %}
                 
                <a  href="?page={{ data.winery.next_page_number }}">下一页</a>
                {% endif %}
            </span>
        </div>
    
    

    注意:我们一般是在settings.py中设置分页大小:

    # 自定义
    PRODUCT_PAGE_SIZE = 3
    

    views.py中:

    paginator = Paginator(winery, settings.PRODUCT_PAGE_SIZE) # 3个为一页
    

    相关文章

      网友评论

        本文标题:Django - Pagination分页

        本文链接:https://www.haomeiwen.com/subject/lshnrxtx.html