美文网首页
分页功能

分页功能

作者: 叶田的学习笔记 | 来源:发表于2018-10-19 03:40 被阅读0次

    views.py

    from django.shortcuts import render
    from django.contrib.auth.decorators import login_required
    from .models import ArticlePost
    
    from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
    
    @login_required(login_url='/account/login/')
    def article_list(request):
        articles_list = ArticlePost.objects.filter(author=request.user)  
        paginator = Paginator(articles_list,4)    # 创建分页实例对象,规定每页最多2个
        page = request.GET.get('page')    # 获得当前浏览器GET请求的参数page的值,也就是当前浏览器所请求的页码数值,该参数必须是大于或等于1的整数
        try:
            current_page = paginator.page(page)  # 得到指定页面内容,page()是Paginator对象的一个方法
            articles = current_page.object_list    # 得到该页所有的对象列表,object_list是Page对象的属性
        except PageNotAnInteger:     # 异常:请求的页码数值不是整数
            current_page = paginator.page(1)
            articles = current_page.object_list
        except EmptyPage:    # 异常:请求的页码数值为空或者URL参数中没有page       
            current_page = paginator.page(paginator.num_pages)   # paginator.num_pages返回的是页数,num_pages是Paginator对象的一个属性
            articles = current_page.object_list
    
        return render(request,'article/column/article_list.html', {'articles': articles, 'page': current_page})
    

    如果请求的页数不是整数,返回第一页。
    如果请求的页数不在合法的页数范围内,返回结果的最后一页。

    paginator.html

    <div class="pagination">
        <span class="step-links">
            {% if page.has_previous %}    
            <a href="?page={{ page.previous_page_number }}">Previous</a>   #注意链接写法
            {% endif %}
            <span class="current">
            Page {{ page.number }} of {{ page.paginator.num_pages }}
            </span>
            {% if page.has_next %}
            <a href="?page={{ page.next_page_number }}">Next</a>
            {% endif %}
        </span>
    </div>
    

    number:返回当前页的页码

    article_list.html

    在适当位置插入paginator.html

    {% include "paginator.html" %}
    

    相关文章

      网友评论

          本文标题:分页功能

          本文链接:https://www.haomeiwen.com/subject/zxbezftx.html