之前的beego课程实战,列表分页那里后来发现有点bug,就重新写了一下,这里贴出来
// 分页列表 func (n *AgricultureController) List() { current_page, _ := n.GetInt("page", 1) // 查询 kw := n.GetString("kw") pagesize := 10 // 这是分页封装的方法,我会放在最下面 count,agricultures := products.AgricultureListModel(current_page, pagesize,kw) // 这是封装的方法,我会放在最下面 num_pages := utils.GetPageNum(count, pagesize) // 这是封装的方法,我会放在最下面 left_pages, right_pages, left_has_more, right_has_more := utils.Get_pagination_data(num_pages, current_page, 2) has_previous, has_next, previous_page_number, next_page_number := utils.HasNext(current_page, num_pages) n.Data["left_pages"] = left_pages //左边页码数[]int n.Data["right_pages"] = right_pages //右边页码数[]int n.Data["left_has_more"] = left_has_more //左边是否有页码 bool n.Data["right_has_more"] = right_has_more //右边是否有页码 bool n.Data["has_previous"] = has_previous //是否有上一页 bool n.Data["has_next"] = has_next //是否有下一页 bool n.Data["previous_page_number"] = previous_page_number //上一页页码 int n.Data["next_page_number"] = next_page_number //下一页页码 int n.Data["num_pages"] = num_pages //总页数 n.Data["page"] = current_page //当前页 n.Data["count"] = count //总数量 n.Data["agricultures"] = agricultures n.Data["kw"] = kw n.TplName = "agriculture/agriculture_list.html" } // 封装的列表分页 func AgricultureListModel(page, pageSize int,kw string) (count int64,agricultures []Agriculture) { o := orm.NewOrm() qs := o.QueryTable(new(Agriculture)) if kw != ""{ // 有查询条件的 // 总数 count,_ = qs.Filter("is_delete",0).Filter("id_card__contains",kw).Count() qs.Filter("is_delete",0).Filter("id_card__contains",kw).Limit(pageSize).Offset((page - 1) * pageSize).RelatedSel().All(&agricultures) }else { count,_ = qs.Filter("is_delete",0).Count() qs.Filter("is_delete",0).Limit(pageSize).Offset((page - 1) * pageSize).RelatedSel().All(&agricultures) } return count,agricultures } // utils的封装方法 func GetPageNum(count int64, pagesize int) int { pagenum := int(math.Ceil(float64(count) / float64(pagesize))) return pagenum } //utils的封装方法,总页数,当前页,前后页数 func Get_pagination_data(num_pages, current_page, around_count int) (left_pages, right_pages []int, left_has_more, right_has_more bool) { if current_page <= around_count+2 { left_pages = Rangelist(1, current_page, left_pages) } else { left_has_more = true left_pages = Rangelist(current_page-around_count, current_page, left_pages) } if current_page >= num_pages-around_count-1 { right_pages = Rangelist(current_page+1, num_pages+1, right_pages) } else { right_has_more = true right_pages = Rangelist(current_page+1, current_page+around_count+1, right_pages) } return } // 有没有前一页,有没有下一页,前面的页码数,后面的页码数 func HasNext(page, num_pages int) (has_previous, has_next bool, previous_page_number, next_page_number int) { if page == 1 && num_pages == page { has_previous = false has_next = false next_page_number = 1 previous_page_number = 1 } else if page == 1 && num_pages > page { has_previous = false has_next = true previous_page_number = page next_page_number = page + 1 } else if page > 1 && num_pages > page { has_previous = true has_next = true previous_page_number = page - 1 next_page_number = page + 1 } else if page > 1 && page == num_pages { has_previous = true has_next = false previous_page_number = page - 1 next_page_number = page } return } //前端使用,把url换成你的列表的url即可 <div id="test-laypage-demo7"> {{if .count}} <div class="layui-box layui-laypage layui-laypage-default" id="layui-laypage-1"> <span class="layui-laypage-count">共 {{.count}} 条</span> {{if .has_previous}} <a href="{{urlfor "AgricultureController.List"}}/?page={{.previous_page_number}}" value="上一页" onclick="pagechange(this)">上一页</a> {{else}} <a href="javascript:void(0);" style="cursor: not-allowed">上一页</a> {{end}} {{if .left_has_more }} <a href="{{urlfor "AgricultureController.List"}}/?page=1" value="1" onclick="pagechange(this)">1</a> <a href="">...</a> {{end}} {{range .left_pages}} <a href="{{urlfor "AgricultureController.List"}}/?page={{.}}" value="{{.}}" onclick="pagechange(this)">{{.}}</a> {{end}} <a class="currentpage" style="color: red" href="{{urlfor "AgricultureController.List"}}/?page={{.page}}" value="{{.page}}" onclick="pagechange(this)">{{.page}}</a> {{range .right_pages }} <a href="{{urlfor "AgricultureController.List"}}/?page={{.}}" value="{{.}}" onclick="pagechange(this)">{{.}}</a> {{end}} {{if.right_has_more }} <a href="">...</a> <a href="{{urlfor "AgricultureController.List"}}/?page={{.num_pages}}" value="{{.num_pages}}" onclick="pagechange(this)">{{.num_pages}}</a> {{end}} {{if .has_next}} <a href="{{urlfor "AgricultureController.List"}}/?page={{.next_page_number}}" value="{{.next_page_number}}" onclick="pagechange(this)">下一页</a> {{else}} <a href="javascript:void(0);" style="cursor: not-allowed">下一页</a> {{end}} </div> {{end}} </div>