beego新版本的分页求助?

发布于 2022-09-01 06:04:30 字数 643 浏览 15 评论 0

 package controllers
 import "github.com/astaxie/beego/utils/pagination"
 type PostsController struct {
   beego.Controller
 }
 func (this *PostsController) ListAllPosts() {
     // sets this.Data["paginator"] with the current offset (from the url query param)
     postsPerPage := 20
     paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())
     // fetch the next 20 posts
     this.Data["posts"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)
 }

CountPosts()参数是不是数据库表中的count计数?
ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage) 这个方法怎么理解怎么运用?里面的参数代表啥意思?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

度的依靠╰つ 2022-09-08 06:04:30

刚看了下源码,paginator.Offset()得到的是当前的偏移条数,即limit [offset,] count中的offset,在beego中是这样实现的(p.Page() - 1) * p.PerPageNums,其中PerPageNums即你传入的postsPerpage,而p.Page()的实现是

func (p *Paginator) Page() int {
    if p.page != 0 {
        return p.page
    }
    if p.Request.Form == nil {
        p.Request.ParseForm()
    }
    p.page, _ = strconv.Atoi(p.Request.Form.Get("p"))
    if p.page > p.PageNums() {
        p.page = p.PageNums()
    }
    if p.page <= 0 {
        p.page = 1
    }
    return p.page
}

很明显,这里需要你在请求里传入一个p来表示当前页码,而每页数量则是你指定的20,举个例子,假设你这个接口名字是posts,那你希望得到第101-120条的接口即为http://host.com/posts?p=6

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文