class PageInfo: def __init__(self, page_num, per_page, all_data, base_page): ''' :param page_num: 当前页 :param per_page: 每页数据数量 :param all_data: 总数据量 :param base_page: 固定页数 ''' try: self.page_num = int(page_num) except Exception as e: self.page_num = 1 self.per_page = int(per_page) self.all_data = all_data self.base_page = base_page def start(self): return (self.page_num - 1) * self.per_page def end(self): return self.page_num * self.per_page # 总页数函数(总数据/每页条数) def total_pages(self): a, b = divmod(self.all_data, self.per_page) if b: a = a + 1 return a def pager(self): page_list = [] harf = divmod(self.base_page, 2)[0] # 若是总页数小于固定分页 if self.total_pages() <= self.base_page: begin = 1 end = self.total_pages() # 若是当前页 + 固定页的一半大于总页数 elif self.page_num + harf >= self.total_pages(): begin = self.total_pages() - self.base_page + 1 end = self.total_pages() # 若是当前页小于harf+1 elif self.page_num < harf + 1: begin = 1 end = self.base_page else: begin = self.page_num - harf end = self.page_num + harf # 上一页 if self.page_num <= 1: prev = '<li><a href="#">上一页</a></li>' else: prev = '<li><a href="?p=%s">上一页</a></li>' % (self.page_num - 1) page_list.append(prev) for i in range(begin, end + 1): if i == self.page_num: temp = '<li class="active"><a href="?p=%s">%s</a></li>' % (i, i) else: temp = '<li><a href="?p=%s">%s</a></li>' % (i, i) page_list.append(temp) # 下一页 if self.page_num >= self.total_pages(): prev = '<li><a href="#">下一页</a></li>' else: prev = '<li><a href="?p=%s">下一页</a></li>' % (self.page_num + 1) page_list.append(prev) return page_list def custom(request): page_num = request.GET.get('p') #当前页 all_page = models.UserInfo.objects.all().count() # 实例化一个page_info对象 page_info = PageInfo(page_num,10,all_page,11) user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()] return render(request,'custom.html',{'user_list':user_list,'page_list':page_info.pager()})
<label for="">
#显示分页内容
{% for row in user_list %} <li>{{ row.id }},{{ row.name }},{{ row.age }}</li> {% endfor %}
#分页栏 <nav aria-label="Page navigation"> <ul class="pagination"> {% for page in page_list %} {{ page |safe }} {% endfor %} </ul> </nav> </label>