第十五单元(分页功能)
<h1>beego框架实现分页功能</h1>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0bd350a4f210947d4f917129d86e6576&file=file.png" alt="" /></p>
<h2>一、定义路由</h2>
<pre><code class="language-go">beego.Router("/user/list", &controllers.UserController{}, "get:UserList") //分页</code></pre>
<h2>二、定义控制器</h2>
<pre><code class="language-go">//分页
func (this *UserController) UserList() {
o := orm.NewOrm()
qs := o.QueryTable("user")
count, _ := qs.Count() //总条数
pageSetNum := 2 //每页显示条数
pageCount := math.Ceil((float64(count) / float64(pageSetNum)))
// 获取当前页码
pageNum, err := this.GetInt("pageNum")
if err != nil {
pageNum = 1
}
//
==========上一页和下一页 代码需要优化,有点low============
//
if pageNum <= 1 {
pageNum = 1
}
pagePre := pageNum - 1
pageNext := pageNum + 1
if pageNum >= int(pageCount) {
pageNum = int(pageCount)
pageNext = int(pageCount)
}
if pagePre <= 1 {
pagePre = 1
}
//存储分页数据的切片
user := new([]models.User)
//获取分页数据
qs.Limit(pageSetNum, (pageNum-1)*pageSetNum).All(user)
//数字页码
var pages = make(map[int]int)
for i := 1; i <= int(pageCount); i++ {
pages[i] = i + 1
}
beego.Info(*user)
this.Data["table_lis"] = *user
this.Data["count"] = count
this.Data["pageCount"] = pageCount
this.Data["pageNum"] = pageNum
this.Data["pagePre"] = pagePre
this.Data["pageNext"] = pageNext
this.Data["pages"] = pages
this.TplName = "user/index.html"
}
</code></pre>