django分页

django分页

# 官方文档
https://docs.djangoproject.com/en/3.1/topics/pagination/

需要用到Paginator模块

from django.core.paginator import Paginator

实例

# 先创建model
# 后端代码

from django.core.paginator import Paginator
def get_list(request, pindex):

    lists = xxx.objects.all()

    # 实例化分页对象
    paginator = Paginator(lists, 10)   # 10为每页多少数据
    
    if pindex == "":  # django中默认返回空值,所以加以判断,并设置默认值为1
    	pindex = 1
    else:  # 如果有返回在值,把返回值转为整数型
    	int(pindex) 
    	
    page = paginator.page(pindex)  # 传递当前页的实例对象到前端
    context = {"page": page}
    
    return render(request, "xxx.html", context)
# url
path('xxx/<pindex>', views.get_list)
# 前端代码

<--当前页内容遍历展示-->
{% for item in page %}
.....    # 内部展示内容代码
{% endfor %}

<--底部分页按钮显示-->
    <nav aria-label="Page navigation">
		<div class="pagination">
			<ul class="pagination">
			{% if page.has_previous %}   # 判断当前页是否有上一页
				<li><a href="/xxx/{{page.previous_page_number}}" aria-label="Previous">
					<span aria-hidden="true">上一页</span></a></li>
            {% endif %}

            {% for num in page.paginator.page_range%}  # 循环遍历页码列表,并展示到底部
            	{%if pindex == page.number%}
                	<li><a href="">{{ num }}</a></li>
                {%else%}
                    <li><a href="/xxx/{{num}}">{{ num }}</a></li>
                {%endif%}
             {% endfor %}

             {% if page.has_next %}  # 判断当前页是否有下一页
                 <li><a href="/xxx/{{page.next_page_number}}" aria-label="Next">
                      <span aria-hidden="true">下一页</span></a></li>
              {% endif %}
       		</ul>
		</div>
    </nav>

补充知识点:

Paginator类对象的属性:

序号属性名说明
1num_pages返回分页之后的总页数
2page_range返回分页后的页码列表

Paginator类对象的方法:

序号方法名说明
1page(self, number)返回第number页的page类实例对象

Page实例对象的属性:

序号属性名说明
1number返回当前页的页码
2object_list返回当前页的数据查询集
3paginator返回对应的Paginator类对象

Page实例对象的方法:

序号方法名说明
1has_previous判断当前页是否有前一页
2has_next判断当前页是否有下一页
3previous_page_number返回前一页的页码
4next_page_number返回下一页的页码
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值