自定义分页

来源:互联网 发布:植村秀淘宝旗舰店 编辑:程序博客网 时间:2024/06/05 19:56

自定义分页

def custom(request):    current_Page = request.GET.get('page')    current_Page = int(current_Page)    per_page = 10    start = (current_Page - 1) * per_page    end = current_Page * per_page    user_list = models.UserInfo.objects.all()[start:end]    return render(request,'custom.html',{'user_list':user_list})
<body><h1>用户列表</h1><ul>    {% for row in user_list %}        <li>{{ row.name }}</li>    {% endfor %}</ul></body>

  • 改写成类
<body ><h1>用户列表</h1><ul>    {% for row in user_list %}        <li>{{ row.name }}</li>    {% endfor %}</ul>{{ page_info.pager|safe }}{#xss攻击#}</body>
class PageInfo(object):    def __init__(self,current_Pag,all_count,per_page,show_page=11):        try:            self.current_Page = int(current_Pag)        except Exception as e:            self.current_Page = 1        self.all_count = all_count        self.per_page = per_page        a,b = divmod(all_count,per_page)        if b:            a = a + 1        self.all_pager = a        self.show_page = show_page    @property    def start(self):        return (self.current_Page - 1) * self.per_page    @property    def end(self):        return self.current_Page * self.per_page    @property    def pager(self):        page_list = []        half = int((self.show_page-1)/2)        begin = self.current_Page - half        stop = self.current_Page + half        for i in range(begin,stop+1):            if i == self.current_Page:                temp = "<a style='color:red' href='/custom.html?page=%s'>%s</a>"%(i,i,)            else:                temp = "<a style='display: inline;margin: 5px;padding: 5px' href='/custom.html?page=%s'>%s</a>"%(i,i,)            page_list.append(temp)        return ''.join(page_list)def custom(request):    all_count = models.UserInfo.objects.all().count()    page_info =PageInfo(request.GET.get('page'),all_count,10)    user_list = models.UserInfo.objects.all()[page_info.start:page_info.end]    return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})

  • 解决总页数 小于 show_page
class PageInfo(object):    def __init__(self,current_Pag,all_count,per_page,show_page=11):        try:            self.current_Page = int(current_Pag)        except Exception as e:            self.current_Page = 1        self.all_count = all_count        self.per_page = per_page        a,b = divmod(all_count,per_page)        if b:            a = a + 1        self.all_pager = a        self.show_page = show_page    @property    def start(self):        return (self.current_Page - 1) * self.per_page    @property    def end(self):        return self.current_Page * self.per_page    @property    def pager(self):        page_list = []        half = int((self.show_page-1)/2)        if self.all_pager < self.show_page:            begin = 1            stop = self.all_pager        else:            begin = self.current_Page - half            stop = self.current_Page + half        for i in range(begin,stop+1):            if i == self.current_Page:                temp = "<a style='color:red' href='/custom.html?page=%s'>%s</a>"%(i,i,)            else:                temp = "<a style='display: inline;margin: 5px;padding: 5px' href='/custom.html?page=%s'>%s</a>"%(i,i,)            page_list.append(temp)        return ''.join(page_list)def custom(request):    all_count = models.UserInfo.objects.filter(id__lt=22).count()    page_info =PageInfo(request.GET.get('page'),all_count,10)    user_list = models.UserInfo.objects.filter(id__lt=22)[page_info.start:page_info.end]    return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})

  • 解决选择开始几个页吗出现的问题
class PageInfo(object):    def __init__(self,current_Pag,all_count,per_page,show_page=11):        try:            self.current_Page = int(current_Pag)        except Exception as e:            self.current_Page = 1        self.all_count = all_count        self.per_page = per_page        a,b = divmod(all_count,per_page)        if b:            a = a + 1        self.all_pager = a        self.show_page = show_page    @property    def start(self):        return (self.current_Page - 1) * self.per_page    @property    def end(self):        return self.current_Page * self.per_page    @property    def pager(self):        page_list = []        half = int((self.show_page-1)/2)        if self.all_pager < self.show_page:            begin = 1            stop = self.all_pager        else:            if self.current_Page <= half:                begin = 1                stop = self.show_page            else:                begin = self.current_Page - half                stop = self.current_Page + half        for i in range(begin,stop+1):            if i == self.current_Page:                temp = "<a style='color:red' href='/custom.html?page=%s'>%s</a>"%(i,i,)            else:                temp = "<a style='display: inline;margin: 5px;padding: 5px' href='/custom.html?page=%s'>%s</a>"%(i,i,)            page_list.append(temp)        return ''.join(page_list)def custom(request):    all_count = models.UserInfo.objects.all().count()    page_info =PageInfo(request.GET.get('page'),all_count,10)    user_list = models.UserInfo.objects.all()[page_info.start:page_info.end]    return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})

  • 解决最后几个页吗出现的问题
class PageInfo(object):    def __init__(self,current_Pag,all_count,per_page,show_page=11):        try:            self.current_Page = int(current_Pag)        except Exception as e:            self.current_Page = 1        self.all_count = all_count        self.per_page = per_page        a,b = divmod(all_count,per_page)        if b:            a = a + 1        self.all_pager = a        self.show_page = show_page    @property    def start(self):        return (self.current_Page - 1) * self.per_page    @property    def end(self):        return self.current_Page * self.per_page    @property    def pager(self):        page_list = []        half = int((self.show_page-1)/2)        if self.all_pager < self.show_page:            begin = 1            stop = self.all_pager        else:            if self.current_Page <= half:                begin = 1                stop = self.show_page            else:                if self.current_Page + half > self.all_pager:                    begin = self.all_pager - self.show_page + 1                    stop = self.all_pager                else:                    begin = self.current_Page - half                    stop = self.current_Page + half        for i in range(begin,stop+1):            if i == self.current_Page:                temp = "<a style='color:red' href='/custom.html?page=%s'>%s</a>"%(i,i,)            else:                temp = "<a style='display: inline;margin: 5px;padding: 5px' href='/custom.html?page=%s'>%s</a>"%(i,i,)            page_list.append(temp)        return ''.join(page_list)def custom(request):    all_count = models.UserInfo.objects.all().count()    page_info =PageInfo(request.GET.get('page'),all_count,10)    user_list = models.UserInfo.objects.all()[page_info.start:page_info.end]    return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})

  • 加入上一页下一页
class PageInfo(object):    def __init__(self,current_Pag,all_count,per_page,show_page=11):        try:            self.current_Page = int(current_Pag)        except Exception as e:            self.current_Page = 1        self.all_count = all_count        self.per_page = per_page        a,b = divmod(all_count,per_page)        if b:            a = a + 1        self.all_pager = a        self.show_page = show_page    @property    def start(self):        return (self.current_Page - 1) * self.per_page    @property    def end(self):        return self.current_Page * self.per_page    @property    def pager(self):        page_list = []        half = int((self.show_page-1)/2)        if self.all_pager < self.show_page:            begin = 1            stop = self.all_pager        else:            if self.current_Page <= half:                begin = 1                stop = self.show_page            else:                if self.current_Page + half > self.all_pager:                    begin = self.all_pager - self.show_page + 1                    stop = self.all_pager                else:                    begin = self.current_Page - half                    stop = self.current_Page + half        if self.current_Page <= 1:            prev = "<a style='color:red' href='/custom.html?page=1'>上一页</a>"        else:            prev = "<a style='color:red' href='/custom.html?page=%s'>上一页</a>"%(self.current_Page-1,)        page_list.append(prev)        for i in range(begin,stop+1):            if i == self.current_Page:                temp = "<a style='color:red' href='/custom.html?page=%s'>%s</a>"%(i,i,)            else:                temp = "<a style='display: inline;margin: 5px;padding: 5px' href='/custom.html?page=%s'>%s</a>"%(i,i,)            page_list.append(temp)        if self.current_Page >= self.all_pager:            nex = "<a style='color:red' href='/custom.html?page=%s'>下一页</a>"%(self.all_pager,)        else:            nex = "<a style='color:red' href='/custom.html?page=%s'>下一页</a>" % (self.current_Page + 1,)        page_list.append(nex)        return ''.join(page_list)def custom(request):    all_count = models.UserInfo.objects.all().count()    page_info =PageInfo(request.GET.get('page'),all_count,10)    user_list = models.UserInfo.objects.all()[page_info.start:page_info.end]    return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})
原创粉丝点击