1.分页器基础学习
1.1 补充知识-批量创建
数据库中数据批量创建,不要每创建一个就往数据库中塞一个,会造成撞库,造成大量I/O操作,速速较慢,应该采用一次性创建大量数据,一次性将大量数据塞入到数据库中。
主要用到:库名.objects.bulk_create(数据)
def index(request): book_list=[] for i in range(1,101): book = Book(title="book%s"%i,price=i*i) book_list.append(book) # 数据批量添到数据库中 Book.objects.bulk_create(book_list) return HttpResponse("ok")
展示如下
1.2 django自带分页器组件
1.2.1 django常用参数
#分页器组件导入 from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger #全局信息查询 paginator = Paginator(book_obj,10) :分页对象,俩个参数,第一个为数据,第二个为每页展示的数量 paginator.count: 展示分页的数据大小 paginator.num_pages:展示总计分页数量 paginator.page_range :类似range的数据类型 #单页信息查询 page = paginator.page(1)#页面对象 page.object_list#打印当前页面的数据量大小 page.has_next()#是否有下一页 page.has_previous()#是否有上一页 page.next_page_number()#当前页的上一页的页码是多少 page.previous_page_number()#当前页的下一页的页码是多少
1.2.2 其他参数
1.3 分页器的基本应用
1.3.1 分页展示数据
def book_list(request): book_obj = Book.objects.all() # 分页器对象 paginator = Paginator(book_obj,10) # 获取当前页码 current_page = int(request.GET.get("page")) # 实例一个页面对象 page = paginator.page(current_page) return render(request,'book_list.html',locals()) #需要注意的是:在模板层记得更改循环的对象
展示如下
1.3.2 错误页展示
对于超出的页码以及错误输入默认展示第一页
展示如下,错误跳转以及默认跳转
1.3.3 页面页码显示
页面页码展示主要是模板层代码改变
首先调用bootstrap,或文件或cdn
页面展示
1.3.4 上一页,下一页功能
上一页,下一页功能实现,主要用
page.has_next()#是否有下一页 page.has_previous()#是否有上一页 page.next_page_number()#当前页的上一页的页码是多少 page.previous_page_number()#当前页的下一页的页码是多少
展示如下
视图层完整代码
def book_list(request): book_obj = Book.objects.all() # 分页器对象 paginator = Paginator(book_obj,10) try: # 获取当前页码,后面默认页为1 current_page = int(request.GET.get("page")) # 实例一个页面对象 page = paginator.page(current_page) # 错误页码默认跳转到首页 except EmptyPage as e: page = paginator.page(1) return render(request,'book_list.html',locals())