python flask实现分页的示例代码
结合mysql数据库查询,实现分页效果
@user.route("/user_list",methods=['POST','GET']) defuser_list(): p=g.args.get("p",'')#页数 show_shouye_status=0#显示首页状态 ifp=='': p=1 else: p=int(p) ifp>1: show_shouye_status=1 mdb=db_session() limit_start=(int(p)-1)*10#起始 sql="select*frompage_textlimit{0},10".format(limit_start) user_list=mdb.getMany(sql) sql="selectcount(id)astotalfrompage_text" count=mdb.getOne(sql)['total']#总记录 total=int(math.ceil(count/10.0))#总页数 dic=get_page(total,p) datas={ 'user_list':user_list, 'p':int(p), 'total':total, 'show_shouye_status':show_shouye_status, 'dic_list':dic } returnrender_template("user_list.html",datas=datas)
其中get_page为封装的方法:
defget_page(total,p): show_page=5#显示的页码数 pageoffset=2#偏移量 start=1#分页条开始 end=total#分页条结束 iftotal>show_page: ifp>pageoffset: start=p-pageoffset iftotal>p+pageoffset: end=p+pageoffset else: end=total else: start=1 iftotal>show_page: end=show_page else: end=total ifp+pageoffset>total: start=start-(p+pageoffset-end) #用于模版中循环 dic=range(start,end+1) returndic
如果这里需要进行前端模板的拼接的话,可以需要以下代码(bootstrap)
{%ifdatas.show_shouye_status==1%} 首页 上一页 {%endif%} {%fordicindatas.dic_list%} {%ifdic==datas.p%} {{dic}} {%else%} {%endif%} {%endfor%} {%ifdatas.p {{dic}} 下一页 尾页 {%endif%} 共{{datas.total}}页
bootstrap样式http://edu.jb51.net/bootstrap/bootstrap-pagination.html
如果是返回给APP端的话,直接返回data数据就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。