結合mysql數據庫查詢,實現分頁效果html
@user.route("/user_list",methods=['POST','GET'])
def user_list():
p = g.args.get("p", '') #頁數
show_shouye_status = 0 #顯示首頁狀態
if p =='':
p=1
else:
p=int(p)
if p > 1:
show_shouye_status = 1
mdb = db_session()
limit_start = (int(p)-1)*10#起始
sql ="select * from page_text limit {0},10".format(limit_start)
user_list=mdb.getMany(sql)
sql="select count(id) as total from page_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
}
return render_template("user_list.html",datas=datas)
其中get_page爲封裝的方法:前端
def get_page(total,p):
show_page = 5 # 顯示的頁碼數
pageoffset = 2 # 偏移量
start = 1 #分頁條開始
end = total #分頁條結束
if total > show_page:
if p > pageoffset:
start = p - pageoffset
if total > p + pageoffset:
end = p + pageoffset
else:
end = total
else:
start = 1
if total > show_page:
end = show_page
else:
end = total
if p + pageoffset > total:
start = start - (p + pageoffset - end)
#用於模版中循環
dic = range(start, end + 1)
return dic
若是這裏須要進行前端模板的拼接的話,能夠須要如下代碼(bootstrap)python
<ul class="pagination"> {% if datas.show_shouye_status==1%} <li class=''><a href='/user/user_list?p=1'>首頁</a></li> <li class=''><a href='/user/user_list?p={{datas.p-1}}'>上一頁</a></li> {%endif%} {% for dic in datas.dic_list %} {% if dic==datas.p%} <li class="active"><a href="/user/user_list?p={{dic}}">{{dic}}</a></li> {%else%} <li><a href="/user/user_list?p={{dic}}">{{dic}}</a></li> {%endif%} {%endfor%} {% if datas.p < datas.total%} <li class=''><a href='/user/user_list?p={{datas.p+1}}'>下一頁</a></li> <li class=''><a href='/user/user_list?p={{datas.total}}'>尾頁</a></li> {%endif%} 共{{datas.total}}頁 </ul>
bootstrap樣式 http://www.runoob.com/bootstrap/bootstrap-pagination.htmlmysql
若是是返回給APP端的話,直接返回data數據就能夠了。web
更多博客請訪問:
http://www.javashuo.com/article/p-fdfgssln-ke.htmlsql