#发芽网的上下翻页那一块都是用的这个
#blog: http://www.2maomao.com/blog/my-paginate-for-django/

def mypaginate(request, total, pagesize, params=""):
    #get page info
    curr = int(request.GET.get('page', 1))
    #calculate the offset
    offset = (curr - 1) * pagesize
    if offset >= total:
        offset = total - 1
    if offset < 0:
        offset = 0
    #paginatize
    page_navi = []
    page_ex = {}
    max_page = (total - 1) / pagesize + 1
    start = curr - ((curr - 1) % 10)
    end = start + 10
    if end > max_page + 1:
        end = max_page + 1 #remember it's [start, end)
    elif max_page > end:
        page_ex['max_page'] = max_page

    for i in range(start, end):
        link = ("?page=%d&" % i) + params
        page_navi.append((i, link))
    if curr > 1:
        page_ex['first'] = ("?page=%d&" % 1) + params
        page_ex['prev'] = ("?page=%d&" % (curr - 1)) + params
    if curr < max_page:
        page_ex['next'] = ("?page=%d&" % (curr + 1)) + params
        page_ex['last'] = ("?page=%d&" % max_page) + params