Django - Pagination分页

分页示例:

在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个为一页
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容