在寫搜尋功能時,對搜尋出來的内容進行分頁,摸索了很久,因為一開始做分頁功能,就是用的自定義的分頁,沒有用Django使用内置paginator類分頁,不過效果還是實作了
在點選search後,頁面顯示的搜尋内容,當點選下一頁的時候,會直接跳回到沒有搜尋之前的内容,在這裡,想了很久,最後用比較笨的方法實作了分頁功能
至于搜尋功能的實作,請參考上篇博文 故障管理系統--select兩級關聯查詢
#/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))
gb001.py
def try_int(arg,default):
try:
arg=int(arg)
except Exception,e:
arg=default
return arg