1、优化:
1)当前页码标记显示
2)页码不要太多,影响用户体验
但是出现了不存在的页面:
思路,对于第一页使用max,对于最后一页使用min:
# views.py
def blog_list(request):
blogs_all_list = Blog.objects.all()
paginator = Paginator(blogs_all_list,2) # 每10篇进行分页
page_num = request.GET.get("page",1) # 获取url的页面参数(GET)请求
page_of_blogs = paginator.get_page(page_num) # 自动会识别与转换处理,如果page=0会自动转换成1的
current_page_num = page_of_blogs.number # 获取当前页码
# 获取当前页面前后各2页的页码范围
page_range = list(range(max(current_page_num - 2, 1), current_page_num)) + \
list(range(current_page_num, min(current_page_num + 2, paginator.num_pages) + 1)) # paginator.num_pages:总页码数
增加页码能够直接跳转到第一页和最后一页
# views.py
def blog_list(request):
...
# 加上省略页码标记
if page_range[0] - 1 >= 2:
page_range.insert(0, '...') # 0表示位置,后面的省略号表示要插入的 内容
if paginator.num_pages - page_range[-1] >= 2:
page_range.append('...') # 使用append来将省略号插入到页码的最后
# 加上首页和尾页
if page_range[0] != 1:
page_range.insert(0, 1)
if page_range[-1] != paginator.num_pages:
page_range.append(paginator.num_pages)
现在省略号可以点,一般是不允许点击的,所以需要判断一下:blog\_list.html
把共有多少也说明放到下面:
将页码居中:
修改blog.css中的paginator属性:
使用settings:
# settings.py
# 自定义参数
EACH_PAGE_BLOGS_NUMBER = 7
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。