django 簡單分頁

初學django分頁, 變量名寫的太隨意見諒. 

1
view.py 2 3 def Index(request,page): 4 page = common(page,1) 5 pageDataCount = 20 6 #data 7 data = models.Host.objects.all() 8 #傳入數據量,當前頁碼數,每頁顯示多少條數據 9 ret = Pager(data,page,pageDataCount) 10 return render_to_response('day13/index.html',ret)
html_helper.py
from django.utils.safestring import mark_safe
import math
def html_div():
    div = '''
        <div>
                <a href="/day13/index/1">首頁</a>
                <a>&nbsp;</a>
                <a>當前頁第 {} 頁 </a>
                <a>&nbsp;</a>
                <a href="/day13/index/{}">上一頁</a>
                <a>&nbsp;</a>
                <a href="/day13/index/{}">下一頁</a>
                <a> &nbsp; 共{} 頁</a>
                <a> &nbsp;每頁顯示 {}條</a>
                <a> &nbsp;  總條數爲 {} 條 &nbsp;</a>
                <a href="/day13/index/{}">尾頁</a>
            </div>
        '''
    return div

def Pager(data,page,pageDataCount):
    '''
    :param page: 當前頁數
    :param pageDataCount: 每頁顯示多少條
    :param data_count: 數據總條數
    :return: 字典
    '''
    #處理前端傳來頁碼數
    page = 1 if page <= 0 else page
    #數據起始位置
    indexPage = (page - 1) * pageDataCount
    # 數據結束位置
    endPage = page * pageDataCount
    #獲取數據總條數
    data_count = data.count()
    #對比起始位置是否大於總條數
    if indexPage > data_count:
        page = 1
        indexPage = (page - 1) * pageDataCount
        endPage = page * pageDataCount
    #每頁顯示多少數據
    data = data[indexPage:endPage]
    #總頁數
    web = math.ceil(data_count / pageDataCount)
    #生成分頁樣式
    div = html_div()
    #填充數據
    webDiv = div.format(page, 1 if page - 1 <= 0 else page - 1, page + 1, web, pageDataCount, data_count,
                        1 if page > web else web)
    #經過mark_safe 將格式化html代碼
    page = mark_safe(webDiv)
    ret = {'data':data,'page': page}
    return ret
相關文章
相關標籤/搜索