我的博客开发(007)

1、优化:

1)当前页码标记显示

2)页码不要太多,影响用户体验
我的博客开发(007)_第1张图片
思路,对于第一页使用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)

image.png

# settings.py
# 自定义参数
EACH_PAGE_BLOGS_NUMBER = 7

我的博客开发(007)_第2张图片

你可能感兴趣的:(python,django,前端,javascript,数据库)