分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Web框架开发-Django-分页器

发布时间:2023-09-06 02:17责任编辑:白小东关键词:Web

一、Django的分页器(paginator)

view

from django.shortcuts import render,HttpResponse# Create your views here.from app01.models import *from django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerdef index(request): ???‘‘‘ ???批量导入数据: ???Booklist=[] ???for i in range(100): ???????Booklist.append(Book(title="book"+str(i),price=30+i*i)) ???Book.objects.bulk_create(Booklist) ???‘‘‘ ???‘‘‘分页器的使用: ???book_list=Book.objects.all() ???paginator = Paginator(book_list, 10) ???print("count:",paginator.count) ??????????#数据总数 ???print("num_pages",paginator.num_pages) ???#总页数 ???print("page_range",paginator.page_range) ?#页码的列表 ???page1=paginator.page(1) #第1页的page对象 ???for i in page1: ????????#遍历第1页的所有数据对象 ???????print(i) ???print(page1.object_list) #第1页的所有数据 ???page2=paginator.page(2) ???print(page2.has_next()) ???????????#是否有下一页 ???print(page2.next_page_number()) ???#下一页的页码 ???print(page2.has_previous()) ???????#是否有上一页 ???print(page2.previous_page_number()) #上一页的页码 ???# 抛错 ???#page=paginator.page(12) ??# error:EmptyPage ???#page=paginator.page("z") ??# error:PageNotAnInteger ???‘‘‘ ???book_list=Book.objects.all() ???paginator = Paginator(book_list, 10) ???page = request.GET.get(‘page‘,1) ???currentPage=int(page) ???try: ???????print(page) ???????book_list = paginator.page(page) ???except PageNotAnInteger: ???????book_list = paginator.page(1) ???except EmptyPage: ???????book_list = paginator.page(paginator.num_pages) ???return render(request,"index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})

  index.html

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Title</title> ???<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" ???integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"></head><body><div class="container"> ???<h4>分页器</h4> ???<ul> ???????{% for book in book_list %} ???????????<li>{{ book.title }}-------{{ book.price }}</li> ???????{% endfor %} ???</ul> ???<ul class="pagination" id = "pager"> ???????{% if book_list.has_previous %} ???????????<li class="previous"><a href="/index/?page={{ book_list.previous_page_number }}">上一页</a> </li> ???????{% else %} ???????????<li class="previous disabled"><a href="#">上一页</a> </li> ???????{% endif %} ???{% for num in paginator.page_range %} ???????{% ?if num == currentPage %} ???????????<li class="item active"><a href="/index/?page={{ num }}">{{ num }}</a> </li> ???????{% else %} ???????<li class="item"><a href="/index/?page={{ num }}">{{ num }}</a> </li> ???????{% endif %} ???{% endfor %} ???{% if book_list.has_next %} ???????<li class="next"><a href="/index/?page={{ book_list.next_page_number }}">下一页</a> </li> ???{% else %} ???????<li class="next disabled"><a href="#">下一页</a> </li> ???{% endif %} ???</ul></div></body></html>

  

扩展

def index(request): ???book_list=Book.objects.all() ???paginator = Paginator(book_list, 15) ???page = request.GET.get(‘page‘,1) ???currentPage=int(page) ???# ?如果页数十分多时,换另外一种显示方式 ???if paginator.num_pages>11: ???????if currentPage-5<1: ???????????pageRange=range(1,11) ???????elif currentPage+5>paginator.num_pages: ???????????pageRange=range(currentPage-5,paginator.num_pages+1) ???????else: ???????????pageRange=range(currentPage-5,currentPage+5) ???else: ???????pageRange=paginator.page_range ???try: ???????print(page) ???????book_list = paginator.page(page) ???except PageNotAnInteger: ???????book_list = paginator.page(1) ???except EmptyPage: ???????book_list = paginator.page(paginator.num_pages) ???return render(request,"index.html",locals())

  

Web框架开发-Django-分页器

原文地址:https://www.cnblogs.com/mike-liu/p/9769984.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved