django提供了分页功能接口,利用Paginator模块实现分页,导入:from django.core.paginator import Paginator
在views.py中添加分页查询方法:
from django.core.paginator import Paginator
def index(request):
#获取请求参数
print("这里是index")
page_number = request.GET.get('page',1)
limit = request.GET.get('limit',5)
articles = models.Article.objects.all() #19 / 5 [:5] [5:11]
page = Paginator(articles,limit) #分页后的对象
articles = page.page(page_number) #当前页的数据
#page 1 ,size 5
print(articles.has_next())#有没有下一页
# print(articles.next_page_number())#下一页的页码,有下一页的话才有
print(articles.has_other_pages())#有没有其他页
print(articles.has_previous())#有没有上一页
# print(articles.previous_page_number())#上一页的页码
print(articles.number) #当前页的页码
print(articles.start_index()) #当前这一页的第一条数据的下标
print(articles.end_index())#当前这一页的最后一条数据的下标
#articles.paginator #就是上面分页完之后的对象
print(page.num_pages) #总共多少页
print(page.page_range) #分页的范围 1 2 3 4
HTML代码:
<div class="text-center mt-2 mt-sm-1 mt-md-0 mb-3 f-16">
{% if articles.has_previous %} # 判断当前页是否有上一页
<a class="text-success" href="/?limit=5&page={{ articles.previous_page_number }}">上一页</a>
{% else %}
<span class="text-secondary" title="当前页已经是首页">上一页</span>
{% endif %}
<span class="mx-2">第 {{ articles.number }} / {{ articles.paginator.num_pages }} 页</span>
{% if articles.has_next %}# 判断当前页是否有下一页
<a class="text-success" href="/?limit=5&page={{ articles.next_page_number }}">下一页</a>
{% else %}
<span class="text-secondary" title="当前页已经是尾页">下一页</span>
{% endif %}
</div>