DJANGO之分页

#coding:utf8
#!/usr/bin/env python
__author__ = 'sws'

from django.utils.html import mark_safe

class PagiInfo:
    '''
    分页信息
    确定每页有几条信息 per_item
    确定每页的显示开始的信息序号,以及结束序号
    self.Page:当前页
    self.Total_count:信息总数目
    self.Per_item:每页显示的数目 默认为5
    '''

    def __init__(self, page, total_count, per_item=5):
        self.Page = page
        self.Total_count = total_count
        self.Per_item = per_item

    @property
    def start(self):
        '''
        返回开始的序号
        '''
        return self.Per_item*(self.Page-1)

    @property
    def end(self):
        '''
        返回结束的序号
        '''
        return self.Per_item*(self.Page)

    @property
    def total_pages(self):
        '''
            返回总页数
        '''
        pages = divmod(self.Total_count,self.Per_item)
        if pages[1] != 0:
            total_page = pages[0]+1
        else:
            total_page = pages[0]
        return total_page

def Paginor(page, total_pages):
    '''
    :param page:  当前页
    :param total_pages:  总页数
    :return: 分页字符串
    '''

    if total_pages < 9:
        start = 0;
        end = total_pages
    else:
        if page < 5:
            start = 0
            end = 10
        else:
            start = page - 5
            if page + 4 > total_pages:
                end = total_pages
            else:
                end = page+4

    pa_html = ['<a href=/index/1>首页</a>']
    if page <= 1:
        pa_html.append('<a href=#>前一页</a>')
    else:
        pa_html.append('<a href=/index/%d>前一页</a>' %(page-1))
    for i in range(start+1,end+1):
        temp = '<a href=/index/%d>%d</a>' %(i, i)
        pa_html.append(temp)

    if page >= total_pages:
        pa_html.append('<a href=#>后一页</a>')
    else:
        pa_html.append('<a href=/index/%d>后一页</a>' %(page+1))

    pa_html.append('<a href=/index/%d>尾页</a>' %(total_pages+1))

    page_string=mark_safe(' '.join(pa_html))

    return page_string



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值