Django 实现的分页类

后台实现的一个分页类:

 1 from django.utils.safestring import mark_safe
 2
 3
 4 class Page:
 5     def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):
 6         self.current_page = current_page
 7         self.data_count = data_count
 8         self.per_page_count = per_page_count
 9         self.pager_num = pager_num
10
11     @property
12     def start(self):
13         return (self.current_page - 1) * self.per_page_count
14
15     @property
16     def end(self):
17         return self.current_page * self.per_page_count
18
19     @property
20     def total_count(self):
21         v, y = divmod(self.data_count, self.per_page_count)
22         if y:
23             v += 1
24         return v
25
26     def page_str(self, base_url):
27         page_list = []
28
29         if self.total_count < self.pager_num:
30             start_index = 1
31             end_index = self.total_count + 1
32         else:
33             if self.current_page <= (self.pager_num + 1) / 2:
34                 start_index = 1
35                 end_index = self.pager_num + 1
36             else:
37                 start_index = self.current_page - (self.pager_num - 1) / 2
38                 end_index = self.current_page + (self.pager_num + 1) / 2
39                 if (self.current_page + (self.pager_num - 1) / 2) > self.total_count:
40                     end_index = self.total_count + 1
41                     start_index = self.total_count - self.pager_num + 1
42
43         if self.current_page == 1:
44             prev = ‘<a class="page" href="javascript:void(0);">上一页</a>‘
45         else:
46             prev = ‘<a class="page" href="%s?p=%s">上一页</a>‘ % (base_url, self.current_page - 1,)
47         page_list.append(prev)
48
49         for i in range(int(start_index), int(end_index)):
50             if i == self.current_page:
51                 temp = ‘<a class="page active" href="%s?p=%s">%s</a>‘ % (base_url, i, i)
52             else:
53                 temp = ‘<a class="page" href="%s?p=%s">%s</a>‘ % (base_url, i, i)
54             page_list.append(temp)
55
56         if self.current_page == self.total_count:
57             nex = ‘<a class="page" href="javascript:void(0);">下一页</a>‘
58         else:
59             nex = ‘<a class="page" href="%s?p=%s">下一页</a>‘ % (base_url, self.current_page + 1,)
60         page_list.append(nex)
61
62         jump = """
63         <input type=‘text‘  /><a onclick=‘jumpTo(this, "%s?p=");‘>GO</a>
64         <script>
65             function jumpTo(ths,base){
66                 var val = ths.previousSibling.value;
67                 location.href = base + val;
68             }
69         </script>
70         """ % (base_url,)
71
72         page_list.append(jump)
73
74         page_str = mark_safe("".join(page_list))
75
76         return page_str

原文地址:https://www.cnblogs.com/WSX1994/p/9135758.html

时间: 2024-10-23 15:09:41

Django 实现的分页类的相关文章

Django 自定义分页类

分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypage page_obj = mypage.Page(total_num, current_page, 'publisher_list') publisher_list = data[page_obj.data_start:page_obj.data_end] page_html = page_obj.

django学习2分页

在django中有一个分页的函数,但是我个人觉得不是很好,有的功能不能定制感觉有点不方便,在另外一方面出于学习的目的,我又自己写了一遍分页的代码用户来实现定制化的内容,在django中自带的分页函数是这样的(django-pagination)使用的时候只需要调用一下就可以了. 现在我们自己来实现一下分页的功能,这个是最后调用的格式 from django.shortcuts import render_to_response from DjangoBlog.blog import models

django之快速分页

本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用.基本知识点:Django提供了数据分页的类,这些类被定义在django/core/paginator.py中对象Paginator用于对列进行一页n条数据的分页运算对象Page用于表示第m页的数据Paginator对象 方法init(列表,int):返回分页对象,参数为列表数据,每面数据的条数属性count:返回对象总数属性num_pages:返回页面总数属性

django中orm分页功能(内置分页)

分批获取数据的方法 数据库方法 models.Uinfo.objects.all()[10:20] django自带的方法 创建一个新的url urlpatterns = [ url(r'^index.html/', views.index), ] 创建index函数 def index(request): """ 分页功能 :param request: :return: """ user_list = models.Uinfo.objects

django视图之分页

在网站开发时,肯定会遇到分页的事情需要处理,在django中也是如此,在Django中处理分页一般会使用到两个类django.core.paginator.Paginator和django.core.paginator.Page,要想在Django中做分页处理,首先我们就需要了解一下这两个类.首先在使用Django的通用视图时,在get_context_data方法中返回的内容中就包含当前页的分类信息,get_context_data方法的返回值中封装了当前页的分页信息,即Paginator和P

PHP非常好用的分页类

分页类: <?php /* * ********************************************* * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 * @作者: 宋海阁 */ class Page { private $myde_total; //总记录数 private $myde_siz

php分页类

<?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; //SQL语句使用limit从句,限制获取记录个数 private $uri; //自动获取url的请求地址 private $pageNum; //总页数 private $page; //当前页 private $config = arr

PHP简单分页类

<?php /* * ********************************************* * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 * @作者: 宋海阁 */ class page { private $myde_total; //总记录数 private $myde_size; //

thinkphp简洁、美观、靠谱的分页类

废话不多说先上图预览下:即本博客的分页: 这个分页类是在thinkphp框架内置的分页类的基础上修改而来: 原分页类的一些设计,在实际运用中感觉不是很方便: 1:只有一页内容时不显示分页: 2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮: 3:分页数比较少时不显示首页和末页按钮: 4:包裹分页内容的父级div没有class: 针对以上问题逐一进行了修改成如下: 1:如果没有数据不显示分页,如果有一页及以上内容即显示分页: 2:默认就显示第一页和最后一页按钮,但是在当前