paginator django 分页器( 二 )


        <p>{{ blog.title }}</p>
        <p>{{ blog.content }}</p>
        <hr>
    {% for%}
</body>
</html>

paginator django 分页器



3接着python manage.py runserver之后打开网址127.0.0.1:8000,你会看到页面呈现31篇文章,若是文章篇数过多,会导致网页加载迟缓甚至卡死,并且十分不美不雅,是以我们就想到利用分页器来解决这个问题 。     

paginator django 分页器



利用django自带的paginator分页器1在views.py添加代码

2from django.shortcuts import rer
from blog.models import Blog
from django.core.paginator import Paginator
def home(request):
    context = {}
    blogs = Blog.objects.all()
    paginator = Paginator(blogs, 5) # 每5份内容分页一次
    page_num = request.GET.get('page',1) # 获取url参数,127.0.0.1:8000/?page=<value>
    # 不法数值则返回1 数值为空也返回1 如 127.0.0.1:8000/?page=asdsa
    page_blogs = paginator.get_page(page_num) #获取当前(页码)所需要的文章列表 半斤八两于一个容器
    context['blogs'] = page_blogs
    return rer(request, "home.html", context)

paginator django 分页器



3这里我们利用了django的Paginator,
用法:Paginator(数据列表,每页中含几多数据)
之后,我们再次打开网页127.0.0.1:8000,会发现页面只显示了10篇文章!我们在网址上输入http://127.0.0.1:8000/?page=2,当作功了!

paginator django 分页器



paginator django 分页器



再次点窜views视图1这里为了结果加倍较着,我点窜了paginator = Paginator(blogs, 2),每一页中只含两篇文章!

2from django.shortcuts import rer
from blog.models import Blog
from django.core.paginator import Paginator
def home(request):
    context = {}
    blogs = Blog.objects.all()
    paginator = Paginator(blogs, 2) # 每2份内容分页一次
    page_num = request.GET.get('page',1) # 获取url参数,127.0.0.1:8000/?page=<value>
    # 不法数值则返回1 数值为空也返回1 如 127.0.0.1:8000/?page=asdsa
    page_blogs = paginator.get_page(page_num) #获取当前(页码)所需要的文章列表 半斤八两于一个容器
    page_list = [x for x in range(page_blogs.number -2, page_blogs.number + 3 )if x in paginator.page_range]
    print(page_list)
    # 添加省略号
    if page_list[0] -1 >= 2: # 判定当前第一个元素减1是否年夜于2 
        page_list.insert(0, "...") # 则插入该数构成为第一个元素 ...
    if paginator.num_pages - page_list[-1] >= 2: # 判定最年夜页码数-最后一个元素相减是否年夜于2

猜你喜欢