
@H_502_10@def insert(request): l = [] @H_502_10@for i @H_502_10@in range(1000): l.append(Book(name=‘第%s天探险的日子‘%i)) Book.objects.bulk_create(l) # 传入一个可迭代对象 @H_502_10@return httpResponse(‘插入成功‘)二,分析器具体写法
book_List.HTML:
@H_502_10@<!DOCTYPE HTML@H_502_10@>@H_502_10@<HTML lang@H_502_10@="en"@H_502_10@>@H_502_10@<head@H_502_10@> @H_502_10@<Meta charset@H_502_10@="UTF-8"@H_502_10@> @H_502_10@<Title@H_502_10@>Title@H_502_10@</Title@H_502_10@> @H_502_10@<script src@H_502_10@="https://cdn.bootCSS.com/jquery/3.4.1/jquery.min.Js"@H_502_10@></script@H_502_10@> @H_502_10@<link href@H_502_10@="https://cdn.bootCSS.com/twitter-bootstrap/3.4.1/CSS/bootstrap.min.CSS" rel@H_502_10@="stylesheet"@H_502_10@> @H_502_10@<script src@H_502_10@="https://cdn.bootCSS.com/twitter-bootstrap/3.4.1/Js/bootstrap.min.Js"@H_502_10@></script@H_502_10@>@H_502_10@</head@H_502_10@>@H_502_10@<body@H_502_10@>@H_502_10@<div class@H_502_10@="container"@H_502_10@> @H_502_10@<div class@H_502_10@="row"@H_502_10@> @H_502_10@<div class@H_502_10@="col-md-8 col-md-offset-2"@H_502_10@> @H_502_10@<table class@H_502_10@="table table-hover table-bordered table-striped"@H_502_10@> @H_502_10@<thead@H_502_10@> @H_502_10@<tr@H_502_10@> @H_502_10@<th@H_502_10@>ID@H_502_10@</th@H_502_10@> @H_502_10@<th@H_502_10@>name@H_502_10@</th@H_502_10@> @H_502_10@</tr@H_502_10@> @H_502_10@</thead@H_502_10@> @H_502_10@<tbody@H_502_10@>{# 传入queryset对象#} {% for book in page_queryset %} @H_502_10@<tr@H_502_10@> @H_502_10@<td@H_502_10@>{{ book.pk }}@H_502_10@</td@H_502_10@> @H_502_10@<td@H_502_10@>{{ book.name }}@H_502_10@</td@H_502_10@> @H_502_10@</tr@H_502_10@> {% endfor %} @H_502_10@</tbody@H_502_10@> @H_502_10@</table@H_502_10@>{# 用安全模式取出分页器#} {{ page_obj.page_HTML|safe }} @H_502_10@</div@H_502_10@> @H_502_10@</div@H_502_10@>@H_502_10@</div@H_502_10@>@H_502_10@</body@H_502_10@>@H_502_10@</HTML@H_502_10@>
vIEws.py
@H_502_10@def show_books(request): # 首先取出所有的书籍 book_List = Book.objects.all() # 取出所有书籍的总个数 all_count = book_List.count() # 取出地址栏里面的page参数,没有的话默认是1 current_page = request.GET.get(‘page‘,1) # 生成一个分页器对象,参数设置当前页,对象总数,每页显示多少数据 page_obj = my_page.Pagination(current_page=current_page,all_count=all_count,per_page_num=10) # 等到一个queryset对象,切片显示当前页面 page_queryset = book_List[page_obj.start:page_obj.end] @H_502_10@return render(request,‘book_List.HTML‘,locals())
ps:需要在你的应用下面新建一个utils文件夹,然后再在这个文件夹下面新建一个my_page.py文件
my_page.py:
@H_502_10@class Pagination(object): @H_502_10@def __init__(self,current_page,all_count,per_page_num=2,pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param all_count: 数据库中的数据总条数 :param per_page_num: 每页显示的数据条数 :param pager_count: 最多显示的页码个数 用法: queryset = model.objects.all() page_obj = Pagination(current_page,all_count) page_data = queryset[page_obj.start:page_obj.end] 获取数据用page_data而不再使用原始的queryset 获取前端分页样式用page_obj.page_HTML """ @H_502_10@try: current_page = int(current_page) @H_502_10@except Exception as e: current_page = 1 @H_502_10@if current_page < 1: current_page = 1 self.current_page = current_page self.all_count = all_count self.per_page_num = per_page_num # 总页码 all_pager,tmp = divmod(all_count,per_page_num) @H_502_10@if tmp: all_pager += 1 self.all_pager = all_pager self.pager_count = pager_count self.pager_count_half = int((pager_count - 1) / 2) @property @H_502_10@def start(self): @H_502_10@return (self.current_page - 1) * self.per_page_num @property @H_502_10@def end(self): @H_502_10@return self.current_page * self.per_page_num @H_502_10@def page_HTML(self): # 如果总页码 < 11个: @H_502_10@if self.all_pager <= self.pager_count: pager_start = 1 pager_end = self.all_pager + 1 # 总页码 > 11 @H_502_10@else: # 当前页如果<=页面上最多显示11/2个页码 @H_502_10@if self.current_page <= self.pager_count_half: pager_start = 1 pager_end = self.pager_count + 1 # 当前页大于5 @H_502_10@else: # 页码翻到最后 @H_502_10@if (self.current_page + self.pager_count_half) > self.all_pager: pager_end = self.all_pager + 1 pager_start = self.all_pager - self.pager_count + 1 @H_502_10@else: pager_start = self.current_page - self.pager_count_half pager_end = self.current_page + self.pager_count_half + 1 page_HTML_List = [] # 添加前面的nav和ul标签 page_HTML_List.append(‘‘‘ <nav aria-label=‘Page navigation>‘ <ul class=‘pagination‘> ‘‘‘) first_page = ‘<li><a href="?page=%s">首页</a></li>‘ % (1) page_HTML_List.append(first_page) @H_502_10@if self.current_page <= 1: prev_page = ‘<li ><a href="#">上一页</a></li>‘ @H_502_10@else: prev_page = ‘<li><a href="?page=%s">上一页</a></li>‘ % (self.current_page - 1,) page_HTML_List.append(prev_page) @H_502_10@for i @H_502_10@in range(pager_start,pager_end): @H_502_10@if i == self.current_page: temp = ‘<li ><a href="?page=%s">%s</a></li>‘ % (i,i,) @H_502_10@else: temp = ‘<li><a href="?page=%s">%s</a></li>‘ % (i,) page_HTML_List.append(temp) @H_502_10@if self.current_page >= self.all_pager: next_page = ‘<li ><a href="#">下一页</a></li>‘ @H_502_10@else: next_page = ‘<li><a href="?page=%s">下一页</a></li>‘ % (self.current_page + 1,) page_HTML_List.append(next_page) last_page = ‘<li><a href="?page=%s">尾页</a></li>‘ % (self.all_pager,) page_HTML_List.append(last_page) # 尾部添加标签 page_HTML_List.append(‘‘‘ </nav> </ul> ‘‘‘) @H_502_10@return ‘‘.join(page_HTML_List)总结
以上是内存溢出为你收集整理的自定义分页器全部内容,希望文章能够帮你解决自定义分页器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)