一、分页的模块导入
from django.core.paginator import Paginator
二、Paginator基本属性的使用
from django.core.paginator import EmptyPage #捕获异常
def fy_one(request):
book_list = models.Book.objects.all()
paginator = Paginator(book_list,5)
try:
page_num = int(request.GET.get('page',1))
page_obj = paginator.page(page_num)
except EmptyPage :
page_num = 1
page_obj = paginator.page(page_num)
start = page_num-3
end = page_num+2
if page_num<=3:
start = 0
end = 5
elif page_num+2 >= paginator.num_pages:
start = paginator.num_pages - 5
end = paginator.num_pages
page_range = paginator.page_range[start:end]
return render(request,'app01/index.html',locals())
四、前端的实现过程
<body>
<h3>INDEX</h3>
{#遍历每页的内容#}
<ul>
{% for book_obj in page_obj %}
<li>{{ book_obj.name }}</li>
{% endfor %}
</ul>
{#分页按钮的逻辑过程#}
<nav aria-label="Page navigation">
<ul class="pagination">
{# 上一页#}
<li>
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}" aria-label="Previous">
<span aria-hidden="true">上一页</span>
</a>
{% endif %}
</li>
{% for i in page_range %}
{% if page_num == i %}
<li class="active"><a href="?page={{ i }}">{{ i }}</a></li>
{% else %}
<li><a href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{# 下一页#}
<li>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}" aria-label="Next">
<span aria-hidden="true">下一页</span>
</a>
{% endif %}
</li>
</ul>
</nav>
</body>
五、实现后的效果展示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2542e3e7717d690682d0753f0ab31d8d.png)