分页
class Page:
def __init__(self, curPage, all, perPage, showPage):
'''
:param curPage: 当前页
:param all: #数据条数
:param perPage: #每页数据个数
:param showPage: #展示多少页码
'''
a, b = divmod(all, perPage) # 求余,第一个是商,第二个是余数
if b != 0:
a = a + 1
self.allPage = a
self.showPage = showPage
self.perPage = perPage
try:
self.curPage = int(curPage)
if self.curPage > self.allPage:
self.curPage = self.allPage
except Exception:
self.curPage = 1
def start(self):
return (self.curPage - 1) * self.perPage
def end(self):
return self.curPage * self.perPage
def pager(self):
half = int(self.showPage / 2)
# 小于showPage,全部显示
if self.allPage < self.showPage:
begin = 1
end = self.allPage + 1
else: # 大于showPage
begin = self.curPage - half
end = self.curPage + half + 1
# 考虑极值情况
if self.curPage - half <= 0 or self.curPage + half > self.allPage:
if self.curPage - half <= 0:
begin = 1
end = self.showPage + 1
if self.curPage + half > self.allPage:
begin = self.allPage - self.showPage
end = self.allPage + 1
pagelist = []
if self.curPage > 1:
#包含了一些bootstrap样式内容
pagelist.append(
'<li class="page-item"><a class="page-link" href="./?page=%s ">上一页</a></li>' % (self.curPage - 1,))
else:
pagelist.append('<li class="page-item"><a class="page-link">无上一页了</a></li>')
for i in range(begin, end):
temp = '<li class="page-item"><a class="page-link" href="./?page=%s">%s</a></li>' % (i, i)
if i == self.curPage:
temp = '<li class="page-item active"><a class="page-link">%s</a></li>' % (i,)
pagelist.append(temp)
if self.curPage < self.allPage:
pagelist.append(
'<li class="page-item"><a class="page-link" href="./?page=%s">下一页</a></li>' % (self.curPage + 1))
else:
pagelist.append('<li class="page-item"><a class="page-link">无下一页了</a></li>')
return ''.join(pagelist)
def custom(req):
curPage = req.GET.get('page')
perPage = 8 # 每页8个
userlist = models.userInfo.objects.all() # filter(id__lt=30)
page = Page(curPage, len(userlist), perPage, 10)
return render(req, './App2/custom.html', {'userlist': userlist[page.start():page.end()], 'page': page})
加 |Safe 为了避开django的xss防御机制