Django分页器
django提供了分页的工具,存在于django.core中 Paginator? :数据分页工具 Page:具体的某一页面 Paginator: 对象创建: Paginator(数据集,每一页数据数) 属性: count:对象总数 num_pages:页面总数 page_range: 页码列表,从1开始 方法: page(整数): 获得一个page对象 常见错误: InvalidPage:page()传递无效页码 PageNotAnInteger:page()传递的不是整数 Empty:page()传递的值有效,但是没有数据 ? Page: 对象获得,通过Paginator的page()方法获得 属性: object_list: 当前页面上所有的数据对象 number: 当前页的页码值 paginator: 当前page关联的Paginator对象 方法: has_next() :判断是否有下一页 has_previous():判断是否有上一页 has_other_pages():判断是否有上一页或下一页 next_page_number():返回下一页的页码 previous_page_number():返回上一页的页码 len():返回当前页的数据的个数 ? 实现分页: 数据库的内容自己添加即可 创建模型: 1 class RequestLog(models.Model): 2 r_ip = models.CharField(max_length=32) 3 r_time = models.FloatField(default=0) 视图函数: 1 def get_log(request): 2 logs = RequestLog.objects.all() 3 paginator = Paginator(logs,3) 4 try: 5 current_page = int(request.GET.get("page",1)) 6 page = paginator.page(current_page) 7 except EmptyPage: 8 page=paginator.page(1) 9 return render(request,‘logs.html‘,context=locals()) 路由注册: 1 urlpatterns = [ 2 url(r‘^getlog/‘,views.get_log),3 ] html分页:使用bootstrap,美化版分页 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Logs</title> 6 <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"> 7 integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" 8 crossorigin="anonymous" 9 </script> 10 </head> 11 <body> 12 <h2>Logs_ip</h2> 13 <ul> 14 {% for log in page.object_list %} 15 <li>{{ log.r_ip }}</li> 16 {% endfor %} 17 </ul> 18 <nav aria-label="Page navigation"> 19 <ul class="pagination"> 20 <li> 21 <a href="?page={{ current_page|add:-1 }}" aria-label="Previous"> 22 <span aria-hidden="true">上一页</span> 23 </a> 24 </li> 25 {% for item in paginator.page_range %} 26 {% if current_page == item %} 27 <li class="active"><a href="?page={{ item }}">{{ item }}</a></li> 28 {% else %} 29 <li><a href="?page={{ item }}">{{ item }}</a></li> 30 {% endif %} 31 {% endfor %} 32 <li> 33 <a href="?page={{ current_page|add:+1 }}" aria-label="Next"> 34 <span aria-hidden="true">下一页</span> 35 </a> 36 </li> 37 </ul> 38 </nav> 39 </body> 40 </html> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |