在写搜索功能时,对搜索出来的内容进行分页,摸索了很久,因为一开始做分页功能,就是用的自定义的分页,没有用Django使用内置paginator类分页,不过效果还是实现了

在点击search后,页面显示的搜索内容,当点击下一页的时候,会直接跳回到没有搜索之前的内容,在这里,想了很久,最后用比较笨的方法实现了分页功能

至于搜索功能的实现,请参考上篇博文故障管理系统--select两级联动查询

html.py

#/usr/bin/envpython#_*_coding:utf-8_*_fromdjango.utils.safestringimportmark_safe"""自定义分页类"""classPageInfo(object):def__init__(self,current,totalitems,peritems=2):self.__current=currentself.__peritems=peritemsself.__totalItme=totalitemsdefFrom(self):return(self.__current-1)*self.__peritemsdefTo(self):returnself.__current*self.__peritemsdefTotalPage(self):result=divmod(self.__totalItme,self.__peritems)ifresult[1]==0:returnresult[0]else:returnresult[0]+1defSearch_Program_page(baseurl,currentPage,totalpage,query,query_platform='test_platform'):"""当有搜索数据提交时,所用分页方法"""perPager=11begin=0end=0iftotalpage<=11:begin=0end=totalpageelse:ifcurrentPage>5:#passbegin=currentPage-5end=currentPage+5ifend>totalpage:end=totalpageelse:begin=0end=11pager_list=[]ifcurrentPage<=1:prev="<liclass='disabled'><ahref='#'>上一页</a></li>"else:prev="<lihref='%s%d?Program=%s&PlatForm=%s'><ahref='%s%d?Program=%s&PlatForm=%s'>上一页</a></li>"%(baseurl,currentPage-1,query,query_platform,baseurl,currentPage-1,query,query_platform,)pager_list.append(prev)foriinrange(begin+1,end+1):ifi==currentPage:temp="<liclass='active'><ahref='%s%d?Program=%s&PlatForm=%s'>%d</a></li>"%(baseurl,i,query,query_platform,i,)else:temp="<li><ahref='%s%d?Program=%s&PlatForm=%s'>%d</a></li>"%(baseurl,i,query,query_platform,i,)pager_list.append(temp)print'temp--->',tempifcurrentPage>=totalpage:next="<liclass='disabled'><ahref='#'>下一页</a></li>"else:next="<lihref='%s%d?Program=%s&PlatForm=%s'><ahref='%s%d?Program=%s&PlatForm=%s'>下一页</a></li>"%(baseurl,currentPage+1,query,query_platform,baseurl,currentPage+1,query,query_platform,)print'next--->',nextpager_list.append(next)returnmark_safe(''.join(pager_list))gb001.py

deftry_int(arg,default):try:arg=int(arg)exceptException,e:arg=defaultreturnarg

view视图中的引用,请参考上篇博文故障管理系统--select两级联动查询