I made a function that returns the number displayed for pagination. I want to get something like this (parentheses is the only show where the active site):
if pages < 10
1 2 3 4 5 6 7 8 9 10
if pages > 10
1 2 3 ... 20 [30] 40 ... 78 79 80
where [30] is active page. If active page < 3
1 2 [3] 4 ... 20 30 40 ... 78 79 80
etc. My code:
count_all - number of all items
items_on_page - items displayed on one page
page - current page
countpages = int(float(count_all+(items_on_page-1))/float(items_on_page))
linkitems = 10
if countpages > (linkitems-1):
countpagesstr = list()
for i in range(1,int(float(linkitems+(2))/float(3))):
countpagesstr += [str(i)]
countpagesstr += ['...']
sr = int(countpages/2)
for i in range(sr-1, sr+1):
countpagesstr += [str(i)]
countpagesstr += ['...']
for i in range(countpages-3, countpages):
countpagesstr += [str(i)]
else:
cp = list()
for c in range(1,countpages+1):
cp.append(str(c))
countpagesstr = cp
return countpagesstr
How to do it better?
嗯,您所做的与以下内容相同:
[str(i) for i in range((linkitems + 2) / 3)] + [' ... ', str(active_page - 1), '[' + str(active_page) + ']', str(active_page + 1), '...'] + [str(i) for i in range(cntitems-3, cntitems)]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.