其他分享
首页 > 其他分享> > django分页

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返回下一页的页码

标签:Paginator,返回,分页,当前页,number,django,pindex,page
来源: https://blog.csdn.net/weixin_45223595/article/details/114582828