# 批量插入数据
# def books_page(request):
# 第一种方案,每循环一次,操作一下数据库,性能低
# for i in range(1000):
# book=models.Book.objects.create(name='图书%s'%i,price=i+10,publish='东京出版社')
# 第二种方式,批量插入
# book_list=[]
# for i in range(1000):
# book=models.Book(name='图书%s'%i,price=i+10,publish='东京出版社')
# book_list.append(book)
# models.Book.objects.bulk_create(book_list,batch_size=100)
# return HttpResponse('ok')
# 分页器的使用
# 后端
from django.core.paginator import Paginator
def books_page(request):
book_list=models.Book.objects.all()
paginator=Paginator(book_list,10)
# Paginator对象的属性
# print(paginator.count) # 数据总条数
# print(paginator.num_pages) # 总页数
# print(paginator.per_page) # 每页显示条数
# print(paginator.page_range) # range(1, 101) 页数范围
# print(paginator.page(1)) # 第一页
page=paginator.page(2)
# print(page.has_next()) # 是否有下一页
# print(page.next_page_number()) # 下一页页码
# print(page.has_previous()) # 是否有上一页
# print(page.previous_page_number()) # 上一页页码
# print(page.object_list) # 分页之后的数据列表
# print(page.number) # 当前页
return render(request,'books_page.html',{'page':page})
# 前端
<tbody>
{% for book in page.object_list %}
<tr>
<td>{{ book.id }}</td>
<td>{{ book.name }}</td>
<td>{{ book.price }}</td>
<td>{{ book.publish }}</td>
</tr>
{% endfor %}
</tbody>
# 后端
from django.core.paginator import Paginator
def books_page(request):
current_num=int(request.GET.get('page_num',1))
book_list=models.Book.objects.all()
paginator=Paginator(book_list,10)
try:
page=paginator.page(current_num)
except Exception as e:
current_num=1
page=paginator.page(current_num)
if paginator.num_pages>11:
if current_num-5<1:
page_range=range(1,12) # 页数范围
elif current_num+5>paginator.num_pages:
page_range=range(paginator.num_pages-10,paginator.num_pages+1)
else:
page_range=range(current_num-5,current_num+6)
else:
page_range=paginator.page_range
return render(request,'books_page.html',locals())
# 前端
<body>
<div class="container-fluid">
<div class="row">
<h1 class="text-center">图书列表</h1>
<div class="col-md-6 col-md-offset-3">
<table class="table table-hover">
<thead>
<tr>
<th>编号</th>
<th>书籍名称</th>
<th>价格</th>
<th>出版社</th>
</tr>
</thead>
<tbody>
{% for book in page.object_list %}
<tr>
<td>{{ book.id }}</td>
<td>{{ book.name }}</td>
<td>{{ book.price }}</