|
20鱼币
cs 文件
from django.db.models import Q
from app import models
from django.utils.safestring import mark_safe
class Cs(object):
def __init__(self, request,ss,pagesize=17,page="ym",plus=5
):
page = request.GET.get(page, "")
if page.isdecimal():
page = int(page)
else:
page = 1
self.page=page
self.pagesize=pagesize
start = (page - 1) * pagesize
end = page * pagesize
self.start= start
self.end = end
print(start,end)
print(page,self.pagesize)
self.ssxs=ss[start:end]
total_cout = ss.count()
# print(total_cout)
totalpagecount, div = divmod(total_cout, self.pagesize)
if div:
totalpagecount += 1
self.totalpagecount=totalpagecount
##底部分页
def html(self):
plus = 5
startpage = self.page - plus
endpage = self.page + plus + 1
if self.totalpagecount <= 2 * plus + 1:
startpage = 1
endpage = 2 * plus + 1
else:
if self.page <= plus:
startpage = 1
endpage = 2 * plus + 1
else:
if (self.page + plus) > self.totalpagecount:
endpage = totalpagecount
startpage = totalpagecount - 2 * plus
else:
startpage = self.page - plus
endpage = self.page + plus
pagestrlist = []
pagestrlist.append('<li class="active"><a href="?ym={}">首页</a></li>'.format(1))
if self.page > 1:
prev = '<li class="active"><a href="?ym={}">上一页</a></li>'.format(self.page - 1)
pagestrlist.append(prev)
else:
prev = '<li class="active"><a href="?ym={}">上一页</a></li>'.format(1)
pagestrlist.append(prev)
for i in range(startpage, endpage + 1):
if i == self.page:
ele = '<li class="active"><a href="?ym={}">{}</a></li>'.format(i, i)
else:
ele = '<li><a href="?ym={}">{}</a></li>'.format(i, i)
pagestrlist.append(ele)
if self.page < self.totalpagecount:
prev = '<li class="active"><a href="?ym={}">下一页</a></li>'.format(self.totalpagecount + 1)
pagestrlist.append(prev)
else:
prev = '<li class="active"><a href="?ym={}">下一页</a></li>'.format(self.totalpagecount)
pagestrlist.append(prev)
pagestrlist.append('<li class="active"><a href="?ym={}">尾页</a></li>'.format(self.totalpagecount))
pagestrlost = mark_safe("".join(pagestrlist))
return pagestrlost
——————————————————————————————————————————————————————————————
views。py文件 内容
from app.cs import Cs
def cs(request):
n = request.GET.get('q',"")
ss = models.Userinfo.objects.filter(
Q(id__icontains=n) |
Q(name__icontains=n) |
Q(password__icontains=n) |
Q(age__icontains=n) |
Q(daa__icontains=n)
)
css = Cs(request,ss)
return render(request, 'hrr.html', {'deat': css.ssxs,"ym":css.html})
——————————————————————
问题是 前台界面 可以正常显示数据库所有内容 也可以搜索数据库内容
出现的问题 前台 进行搜索完成后 数据量过多 分页工能不能正常使用 点击下一页是全部数据库的内容
您可以将搜索关键字作为Cs类的一个属性,当搜索关键字存在时,在分页链接中添加搜索关键字;当搜索关键字不存在时,分页链接就不包含搜索关键字。您可以在构造函数中添加一个参数n,表示搜索关键字,并在html方法中根据是否存在搜索关键字来修改链接。
在Cs类的构造函数中添加:
class Cs(object):
def __init__(self, request, ss, n="", pagesize=17, page="ym", plus=5):
...
self.n = n
...
然后在html方法中修改链接:
def html(self):
...
for i in range(startpage, endpage + 1):
if self.n:
if i == self.page:
ele = '<li class="active"><a href="?q={}&ym={}">{}</a></li>'.format(self.n, i, i)
else:
ele = '<li><a href="?q={}&ym={}">{}</a></li>'.format(self.n, i, i)
else:
if i == self.page:
ele = '<li class="active"><a href="?ym={}">{}</a></li>'.format(i, i)
else:
ele = '<li><a href="?ym={}">{}</a></li>'.format(i, i)
pagestrlist.append(ele)
...
这样就可以在保持分页功能正常的同时,也能正确处理搜索关键字了。
|
最佳答案
查看完整内容
您可以将搜索关键字作为Cs类的一个属性,当搜索关键字存在时,在分页链接中添加搜索关键字;当搜索关键字不存在时,分页链接就不包含搜索关键字。您可以在构造函数中添加一个参数n,表示搜索关键字,并在html方法中根据是否存在搜索关键字来修改链接。
在Cs类的构造函数中添加:
然后在html方法中修改链接:
这样就可以在保持分页功能正常的同时,也能正确处理搜索关键字了。
|