博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几个实现分页的方法
阅读量:5883 次
发布时间:2019-06-19

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

自定义方法

def user_list(request):    # user_list = data[0:10]    # user_list = data[10:20]    try:        current_page = int(request.GET.get("page"))    except Exception as e:        current_page = 1    per_page = 10    # 数据总条数    total_count = len(data)    # 总页码    total_page, more = divmod(total_count, per_page)    if more:        total_page += 1    # 页面最多显示多少个页码    max_show = 11    half_show = int((max_show-1)/2)    if current_page <= half_show:        show_start = 1        show_end = max_show    else:        if current_page + half_show >= total_page:            show_start = total_page - max_show            show_end = total_page        else:            show_start = current_page - half_show            show_end = current_page + half_show    # 数据库中获取数据    data_start = (current_page - 1) * per_page    data_end = current_page * per_page    user_list = data[data_start:data_end]    # 生成页面上显示的页码    page_html_list = []    # 加首页    first_li = '
  • 首页
  • ' page_html_list.append(first_li) # 加上一页 if current_page == 1: prev_li = '
  • 上一页
  • ' else: prev_li = '
  • 上一页
  • '.format(current_page - 1) page_html_list.append(prev_li) for i in range(show_start, show_end+1): if i == current_page: li_tag = '
  • {0}
  • '.format(i) else: li_tag = '
  • {0}
  • '.format(i) page_html_list.append(li_tag) # 加下一页 if current_page == total_page: next_li = '
  • 下一页
  • ' else: next_li = '
  • 下一页
  • '.format(current_page+1) page_html_list.append(next_li) # 加尾页 page_end_li = '
  • 尾页
  • '.format(total_page) page_html_list.append(page_end_li) page_html = "".join(page_html_list) return render(request, "user_list.html", {
    "user_list": user_list, "page_html": page_html})
    基础版
    class Pagination(object):    def __init__(self, current_page, total_count, base_url, per_page=10, max_show=11):        """        :param current_page: 当前页        :param total_count: 数据库中数据总数        :param per_page: 每页显示多少条数据        :param max_show: 最多显示多少页        """        try:            current_page = int(current_page)        except Exception as e:            current_page = 1        self.current_page = current_page        self.total_count = total_count        self.base_url = base_url        self.per_page = per_page        self.max_show = max_show        # 总页码        total_page, more = divmod(total_count, per_page)        if more:            total_page += 1                half_show = int((max_show - 1) / 2)        self.half_show = half_show        self.total_page = total_page    @property    def start(self):        return (self.current_page - 1) * self.per_page    @property    def end(self):        return self.current_page * self.per_page    def page_html(self):        if self.current_page <= self.half_show:            show_start = 1            show_end = self.max_show        else:            if self.current_page + self.half_show >= self.total_page:                show_start = self.total_page - self.max_show                show_end = self.total_page            else:                show_start = self.current_page - self.half_show                show_end = self.current_page + self.half_show                # 生成页面上显示的页码        page_html_list = []        # 加首页        first_li = '
  • 首页
  • '.format(self.base_url) page_html_list.append(first_li) # 加上一页 if self.current_page == 1: prev_li = '
  • 上一页
  • ' else: prev_li = '
  • 上一页
  • '.format(self.base_url, self.current_page - 1) page_html_list.append(prev_li) for i in range(show_start, show_end + 1): if i == self.current_page: li_tag = '
  • {1}
  • '.format(self.base_url, i) else: li_tag = '
  • {1}
  • '.format(self.base_url, i) page_html_list.append(li_tag) # 加下一页 if self.current_page == self.total_page: next_li = '
  • 下一页
  • ' else: next_li = '
  • 下一页
  • '.format(self.base_url, self.current_page + 1) page_html_list.append(next_li) # 加尾页 page_end_li = '
  • 尾页
  • '.format(self.base_url, self.total_page) page_html_list.append(page_end_li) return "".join(page_html_list)
    封装保存版

    注意:需要自定义一个工具文件夹存放

    from utils import mypagedef user_list(request):    pager = Pagination(request.GET.get("page"), len(data), request.path_info)    user_list = data[pager.start:pager.end]    page_html = pager.page_html()    return render(request, "user_list.html", {
    "user_list": user_list, "page_html": page_html})
    封装保存版使用指南

    Djangon内置分页

    from django.shortcuts import renderfrom django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerL = []for i in range(999):    L.append(i)def index(request):    current_page = request.GET.get('p')    paginator = Paginator(L, 10)    # per_page: 每页显示条目数量    # count:    数据总个数    # num_pages:总页数    # page_range:总页数的索引范围,如: (1,10),(1,200)    # page:     page对象    try:        posts = paginator.page(current_page)        # has_next              是否有下一页        # next_page_number      下一页页码        # has_previous          是否有上一页        # previous_page_number  上一页页码        # object_list           分页之后的数据列表        # number                当前页        # paginator             paginator对象    except PageNotAnInteger:        posts = paginator.page(1)    except EmptyPage:        posts = paginator.page(paginator.num_pages)    return render(request, 'index.html', {
    'posts': posts})
    内置分页view部分
        
      {
      % for item in posts %}
    • {
      { item }}
    • {
      % endfor %}
    内置分页HTML部分

    内置分页实现的样式没有自定义的丰富,使用起来也没有自定义的方便,自定义的可以作为一个工具,随时调用。

     

    转载于:https://www.cnblogs.com/DI-DIAO/p/8728093.html

    你可能感兴趣的文章
    将Java应用部署到SAP云平台neo环境的两种方式
    查看>>
    SAP CRM和C4C的客户主数据修改历史记录查询
    查看>>
    如何在CRM WebClient UI里使用HANA Live Report
    查看>>
    树莓派终端安装FTP服务器
    查看>>
    如何向妻子解释设计模式
    查看>>
    FolderPane
    查看>>
    CentOS 6.4 安装RBTools 报错 ImportError: Entry point ('console_scripts', 'easy_install') not found...
    查看>>
    Maven学习总结(七)——eclipse中使用Maven创建Web项目
    查看>>
    java描述学生
    查看>>
    如何取未知Json字符串 某个主键取对应的Value
    查看>>
    Java基础学习总结(4)——对象转型
    查看>>
    迁移home分区
    查看>>
    Git使用详细教程
    查看>>
    linux 查看进程使用(打开)的文件
    查看>>
    Java基础学习总结(9)——this关键字
    查看>>
    提取用户下的所有表的表结构
    查看>>
    [IOI2018]组合动作——构造
    查看>>
    POJ 3026 Borg Maze 广搜(BFS)+最小生成树
    查看>>
    字符串转化成字符型指针
    查看>>
    2019年春第一次程序设计实验报告
    查看>>