1. 程式人生 > >django 簡單分頁

django 簡單分頁

object common res ceil 上一頁 form ren xpage render

初學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

django 簡單分頁