django內建分頁
from django.shortcuts import render
from django.core.paginator import paginator, emptypage, pagenotaninteger
l =
for i in range(999):
def index(request):
current_page = request.get.get('p')
paginator = paginator(l, 10)
# per_page: 每頁顯示條目數量
# count: 資料總個數
# num_pages:總頁數
# page_range:總頁數的索引範圍,如: (1,10),(1,200)
# page: page物件
try:
posts = paginator.page(current_page)
# object_list 分頁之後的資料列表
# number 當前頁
# paginator paginator物件
except pagenotaninteger:
posts = paginator.page(1)
except emptypage:
posts = paginator.page(paginator.num_pages)
return render(request, 'index.html', )
previous
page } of }.
next
from django.shortcuts import render
from django.core.paginator import paginator, emptypage, pagenotaninteger
class custompaginator(paginator):
def __init__(self, current_page, max_pager_num, *args, **kwargs):
""":param current_page: 當前頁
:param max_pager_num:最多顯示的頁碼個數
:param args:
:param kwargs:
:return:
"""self.current_page = int(current_page)
self.max_pager_num = max_pager_num
super(custompaginator, self).__init__(*args, **kwargs)
def page_num_range(self):
# 當前頁面
# self.current_page
# 總頁數
# self.num_pages
# 最多顯示的頁碼個數
# self.max_pager_num
print(1)
if self.num_pages < self.max_pager_num:
return range(1, self.num_pages + 1)
print(2)
part = int(self.max_pager_num / 2)
if self.current_page - part < 1:
return range(1, self.max_pager_num + 1)
print(3)
if self.current_page + part > self.num_pages:
return range(self.num_pages + 1 - self.max_pager_num, self.num_pages + 1)
print(4)
return range(self.current_page - part, self.current_page + part + 1)
l =
for i in range(999):
def index(request):
current_page = request.get.get('p')
paginator = custompaginator(current_page, 11, l, 10)
# per_page: 每頁顯示條目數量
# count: 資料總個數
# num_pages:總頁數
# page_range:總頁數的索引範圍,如: (1,10),(1,200)
# page: page物件
try:
posts = paginator.page(current_page)
# object_list 分頁之後的資料列表
# number 當前頁
# paginator paginator物件
except pagenotaninteger:
posts = paginator.page(1)
except emptypage:
posts = paginator.page(paginator.num_pages)
return render(request, 'index.html', )
previous
}next
page } of }.
2.自定義分頁
分頁功能在每個**都是必要的,對於分頁來說,其實就是根據使用者的輸入計算出應該在資料庫表中的起始位置。
1、設定每頁顯示資料條數
2、使用者輸入頁碼(第一頁、第二頁…)
3、根據設定的每頁顯示條數和當前頁碼,計算出需要取資料表的起始位置
4、在資料表中根據起始位置取值,頁面上輸出資料
1、設定每頁顯示資料條數
2、使用者輸入頁碼(第一頁、第二頁…)
3、設定顯示多少頁號
4、獲取當前資料總條數
5、根據設定顯示多少頁號和資料總條數計算出,總頁數
6、根據設定的每頁顯示條數和當前頁碼,計算出需要取資料表的起始位置
7、在資料表中根據起始位置取值,頁面上輸出資料
#!/usr/bin/env python
# _*_coding:utf-8_*_
from django.utils.safestring import mark_safe
class pageinfo(object):
def __init__(self,current,totalitem,peritems=5):
self.__current=current
self.__peritems=peritems
self.__totalitem=totalitem
def from(self):
return (self.__current-1)*self.__peritems
def to(self):
return self.__current*self.__peritems
def totalpage(self): #總頁數
result=divmod(self.__totalitem,self.__peritems)
if result[1]==0:
return result[0]
else:
return result[0]+1
def custompager(baseurl,currentpage,totalpage): #基礎頁,當前頁,總頁數
perpager=11
#總頁數<11
#0 -- totalpage
#總頁數》11
#當前頁大於5 currentpage-5 -- currentpage+5
#currentpage+5是否超過總頁數,超過總頁數,end就是總頁數
#當前頁小於5 0 -- 11
begin=0
end=0
if totalpage <= 11:
begin=0
end=totalpage
else:
if currentpage>5:
begin=currentpage-5
end=currentpage+5
if end > totalpage:
end=totalpage
else:
begin=0
end=11
pager_list=
if currentpage<=1:
first="首頁"
else:
first="首頁" % (baseurl,1)
if currentpage<=1:
else:
for i in range(begin+1,end+1):
if i == currentpage:
temp="%d" % (baseurl,i,i)
else:
temp="%d" % (baseurl,i,i)
if currentpage>=totalpage:
else:
if currentpage>=totalpage:
last="末頁"
else:
last="末頁" % (baseurl,totalpage)
result=''.join(pager_list)
return mark_safe(result) #把字串轉成html語言
總結,分頁時需要做三件事:
建立處理分頁資料的類
根據分頁資料獲取資料
Django框架全面講解
第一篇web框架 第二遍初識django 第三篇資料庫與orm 第四篇django之模板語言 第五篇django url name 詳解 第六篇 orm 操作大全 第七篇 django 認證系統 第八篇django分頁 第九篇 ajax 第十篇 form表單 第十一篇 中介軟體 第十二篇檢視層之檢視...
Django框架全面講解 Form
django中的form一般有兩種功能 輸入html 驗證使用者輸入 usr bin env python3 coding utf 8 import re from django import forms from django.core.exceptions import validationer...
Django框架全面講解 admin
django amdin是django提供的乙個後台管理頁面,改管理頁面提供完善的html和css,使得你在通過model建立完資料庫表之後,就可以對資料進行增刪改查,而使用django admin 則需要以下步驟 建立後台管理員 配置url 註冊和配置django admin後台管理頁面1 建立後...