在写搜索功能时,对搜索出来的内容进行分页,摸索了很久,因为一开始做分页功能,就是用的自定义的分页,没有用Django使用内置paginator类分页,不过效果还是实现了
在点击search后,页面显示的搜索内容,当点击下一页的时候,会直接跳回到没有搜索之前的内容,在这里,想了很久,最后用比较笨的方法实现了分页功能
至于搜索功能的实现,请参考上篇博文 故障管理系统--select两级联动查询
html.py
#/usr/bin/env python
#_*_coding:utf-8_*_
from django.utils.safestring import mark_safe
"""
自定义分页类
"""
class PageInfo(object):
def __init__(self,current,totalitems,peritems=2):
self.__current=current
self.__peritems=peritems
self.__totalItme=totalitems
def From(self):
return (self.__current -1)*self.__peritems
def To(self):
return self.__current * self.__peritems
def TotalPage(self):
result=divmod(self.__totalItme,self.__peritems)
if result[1]==0:
return result[0]
else:
return result[0]+1
def Search_Program_page(baseurl,currentPage,totalpage,query,query_platform='test_platform'):
"""
当有搜索数据提交时,所用分页方法
"""
perPager = 11
begin = 0
end = 0
if totalpage <= 11:
begin = 0
end = totalpage
else:
if currentPage>5:
#pass
begin = currentPage - 5
end = currentPage + 5
if end >totalpage:
end = totalpage
else:
begin = 0
end = 11
pager_list = []
if currentPage <= 1:
prev = "<li class='disabled'><a href='#'>上一页</a></li>"
else:
prev = "<li href='%s%d?Program=%s&PlatForm=%s'><a href='%s%d?Program=%s&PlatForm=%s'>上一页</a></li>" %(baseurl,currentPage-1,query,query_platform,baseurl,currentPage-1,query,query_platform,)
pager_list.append(prev)
for i in range(begin+1,end+1):
if i == currentPage:
temp = "<li class='active'> <a href='%s%d?Program=%s&PlatForm=%s'>%d</a> </li>" %(baseurl,i,query,query_platform,i,)
else:
temp = "<li><a href='%s%d?Program=%s&PlatForm=%s'>%d</a></li>" %(baseurl,i,query,query_platform,i,)
pager_list.append(temp)
print 'temp--->',temp
if currentPage>=totalpage:
next = "<li class='disabled'><a href='#'>下一页</a></li>"
else:
next = "<li href='%s%d?Program=%s&PlatForm=%s'><a href='%s%d?Program=%s&PlatForm=%s'>下一页</a></li>" %(baseurl,currentPage+1,query,query_platform,baseurl,currentPage+1,query,query_platform,)
print 'next--->',next
pager_list.append(next)
return mark_safe(''.join(pager_list))
def try_int(arg,default):
try:
arg=int(arg)
except Exception,e:
arg=default
return arg
view视图中的引用,请参考上篇博文 故障管理系统--select两级联动查询
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。