• Django--分页


    功能

    web分页


    使用

    在项目中创建一个分页的class,web用到分页的地方直接用下面的function调用即可。


    速查

    class
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    class Pager(object):
        def __init__(self,current_page):
            self.current_page = int(current_page)
        @property
        def start(self):
            return (self.current_page-1) * 10
        @property
        def end(self):
            return self.current_page * 10
        def page_str(self,all_item,base_url):
            all_page,div = divmod(all_item,10#计算分页数量,每页显示10条数据,div是余数
            if div >0 :
                all_page += 1
            pager_list = [] #先定义成列表,最后再join成字符串传给前端
            if all_page <=11:   #计算start和end
                start = 1
                end = all_page
            else:
                if self.current_page <= 6:
                    start =1
                    end = 12
                else:
                    start = self.current_page -5
                    end = self.current_page +6
                    if self.current_page+6 >all_page:
                        start = all_page -11
                        end = all_page + 1
            for i in range(start,end): #生成分页的html标签,当前页变红变大显示
                if i == self.current_page:
                    temp = '<a style="color:red;font-size:26px;" href="%s%d">%d</a>' % (base_url,i,i)
                else:
                    temp = '<a href="%s%d">%d</a>' % (base_url,i,i)
                pager_list.append(temp)
     
            #上一页
            if self.current_page>1: #href到当前页的上一个数字
                pre_page = '<a href="%s%d">上一页</a>' %(base_url,self.current_page-1)
            else:
                pre_page = '<a href="javascript:void(0)">上一页</a>'   #href什么也不做
            #下一页
            if self.current_page >= all_page:
                next_page = '<a href="javascript:void(0)">下一页</a>'
            else:
                next_page = '<a href="%s%d">下一页</a>'%(base_url,self.current_page+1)
            pager_list.insert(0,pre_page)
            pager_list.append(next_page)
     
            #首页
            if self.current_page == 1:
                home_page = '<a href="javascript:void(0)">首页</a>'
            else:
                home_page = '<a href="%s%d">首页</a>'%(base_url,1)
            #尾页
            if self.current_page == all_page:
                last_page = '<a href="javascript:void(0)">尾页</a>'
            else:
                last_page = '<a href="%s%d">尾页</a>'%(base_url,all_page)
            pager_list.insert(0,home_page)
            pager_list.append(last_page)
     
            #最终html字符串
            return mark_safe("".join(pager_list))
    function
    1
    2
    3
    4
    5
    6
    7
    8
    def user_list(request):
        current_page = request.GET.get('page',1)
        page_obj = Pager(current_page)
        result = models.UserList.objects.all()[page_obj.start:page_obj.end]
     
        all_item = models.UserList.objects.all().count()
        pager_str = page_obj.page_str(all_item,"/user_list/?page=")
        return render(request,'user_list.html',{'result':result,'pager_str':pager_str})


    知识点

    1、只取数据库表的前10条
    1
    models.UserList.objects.all()[0:10]
    2、分页是起始数和结束数
    1
    2
    start = (current_page-1)*10
    end = current_page*10
    3、类的静态方法,不用加括号调用
    1
    2
    3
    4
    5
    6
    class pager():
        @property
        def start(self):
            return (self.current_page-1) * 10
     
    page_obj.start    #==>直接得到结果
    4、计算分页数
    1
    2
    3
    4
    all_item = models.UserList.objects.all().count()
    all_page,div = divmod(all_item,10)
        if div >0 :
            all_page += 1
    5、a标签点击什么也不做
    1
    <a href="javascript:void(0)">无效标签</a>
    6、字符串和列表拼接成html标签
    字符串:
    1
    html += str
    列表:
    1
    2
    3
    list.insert(0,A)  --开头插入
    list.append(A)    --末尾插入
    html = "".join(list)
    7、xss字符串安全
    1
    2
    from django.utils.safestring import mark_safe
    return mark_safe(html_str)


    详细步骤

    参照:d22page项目及video













  • 相关阅读:
    ActionBarSherlock的使用--------(一)配置
    宣布发布 Windows Azure ExpressRoute,宣告与 Level 3 建立全新的合作伙伴关系并推出关于其他 Azure 服务令人振奋的更新
    最佳实践:Windows Azure 网站 (WAWS)
    Strata 2014 上的 AzureCAT 粉笔会谈
    Windows Azure HDInsight 支持预览版 Hadoop 2.2 群集
    Windows Azure 网站上的 WordPress 3.8
    进一步探索:Windows Azure 网站中解锁的配置选项
    如何使用 Barracuda 防火墙设置/保护 Azure 应用程序
    Windows Azure 网站自愈
    宣布与 NBC 合作直播索契冬季奥运
  • 原文地址:https://www.cnblogs.com/daliangtou/p/5368531.html
Copyright © 2020-2023  润新知