博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中分页使用
阅读量:4983 次
发布时间:2019-06-12

本文共 2897 字,大约阅读时间需要 9 分钟。

 

分页代码pagination.py如文件:

from django.utils.safestring import mark_safefrom django.http.request import QueryDictclass Pagination:    """    page: 当前的页码数    all_count: 总的数据量    per_num :  每页显示的数据量    max_show:  最多显示的页码数    """    def __init__(self, page, all_count, params=None, per_num=10, max_show=11):        try:            self.page = int(page)            if self.page <= 0:                self.page = 1        except Exception:            self.page = 1        # 查询条件        self.params = params        if not self.params:            self.params = QueryDict(mutable=True)        # 总的数据量        all_count = all_count        # 每页显示的数据量  10        # 总的页码数        total_num, more = divmod(all_count, per_num)        if more:            total_num += 1        # 最大显示的页码数        half_show = max_show // 2        if total_num <= max_show:            page_start = 1            page_end = total_num        else:            if self.page - half_show <= 0:                # 页码的起始值                page_start = 1                # 页码的终止值                page_end = max_show            elif self.page + half_show > total_num:                page_end = total_num                page_start = total_num - max_show + 1            else:                # 页码的起始值                page_start = self.page - half_show                # 页码的终止值                page_end = self.page + half_show        self.page_start = page_start        self.page_end = page_end        self.total_num = total_num        self.start = (self.page - 1) * per_num        self.end = self.page * per_num    @property    def page_html(self):        li_list = []        if self.page == 1:            li_list.append(                '
  • ') else: self.params['page'] = self.page -1 # { query:13 ,page : 1 } li_list.append( '
  • '.format( self.params.urlencode())) # ?query=13&page=1 for i in range(self.page_start, self.page_end + 1): self.params['page'] = i # { query:13 ,page : i} if i == self.page: li_list.append('
  • {}
  • '.format(self.params.urlencode(), i)) else: li_list.append('
  • {}
  • '.format(self.params.urlencode(), i)) if self.page == self.total_num: li_list.append( '
  • ') else: self.params['page'] = self.page + 1 li_list.append( '
  • '.format( self.params.urlencode())) return mark_safe(''.join(li_list))

     

     

    使用需导入

    添加bootstrap的ul样式

     

    上面的还没有记住查询条件 ,因为使用的是post请求,改成get请求。

    由POST获取搜索框内容改成由GET里获取。并且判断没有获取到那么就是返回首页。es限制只能查出10条数据,我们这里在query同级上加 ‘size’:大小   ,这样就可以显示多个了

    实例化page,数据是列表变成以下切片,然后传页面

    页面代码使用上面已经写了。这样点击其它页面就能使用前面拼接的内容了

     

    转载于:https://www.cnblogs.com/machangwei-8/p/11389455.html

    你可能感兴趣的文章
    MVC中局部视图的使用
    查看>>
    怎么接音响
    查看>>
    NPOI创建Word
    查看>>
    制单表查询all终于搞定了辅助核算显示
    查看>>
    Linux进程通信的几种方式总结
    查看>>
    DNS用的是TCP协议还是UDP协议
    查看>>
    JDK8集合类源码解析 - HashSet
    查看>>
    [面试没有回答上的问题4]常用字符串和数组的操作。
    查看>>
    WPF知识点全攻略09- 附加属性
    查看>>
    敏捷开发 流程 - 及产出
    查看>>
    关于SQL Server 2017中使用json传参时解析遇到的多层解析问题
    查看>>
    [转]SVN客户端解决authorization failed问题
    查看>>
    /etc/init.d目录和/etc/rc.local脚本
    查看>>
    Kubernetes StatefulSets
    查看>>
    用Python对html进行编码
    查看>>
    [转载]Java文件路径详解
    查看>>
    18.3.2从Class上获取信息(构造器)
    查看>>
    【TortoiseGit】TortoiseGit将本地库push到远端
    查看>>
    怎么样学习算法导论理论知识-算法何用
    查看>>
    Jenkins使用手册及总结
    查看>>