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

django--两级联查搜索分页功能_第1张图片

    在点击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 =  "上一页"
        
    else:
        prev = "上一页"  %(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 = " %d "  %(baseurl,i,query,query_platform,i,)
        else:
            
            temp = "
  • %d
  • " %(baseurl,i,query,query_platform,i,)         pager_list.append(temp)         print 'temp--->',temp              if currentPage>=totalpage:         next = "下一页"        else:                 next = "下一页"  %(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

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