python-Django框架封装的分页方式

我爱海鲸 2021-05-02 02:19:18 python

简介Django底层封装的分页方式进行分页

1、初始项目,参考python-Django原生分页方式


2、在view.py中编写如下代码:

from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage

#Django分页

def index2_view(request):

    #获取当前页码数

    num = request.GET.get('num',1)

    n = int(num)


    #查询所有数据

    movies = Movie.objects.all()


    #创建分页器对象

    pager = Paginator(movies,20)


    #获取当前页的数据

    try:

        perpage_data = pager.page(n)

    except PageNotAnInteger:

        #返回第一页的数据

        perpage_data = pager.page(1)

    except EmptyPage:

        #返回最后一页的数据

        perpage_data = pager.page(pager.num_pages)



    return render(request,'index01.html',{'pager':pager,'perpage_data':perpage_data})

如图:

undefined

3、注意请求的路径是否更改,如图:

undefined

4、编写前端的html代码:

   <div id="content" >

        <ul class="clearfix">

            {% for movie in perpage_data %}

                <li>

                   <a href="{{ movie.mlink }}"><img src="{{ movie.mimg }}"/></a>

                    <h1 class="h1">{{ movie.mname }}</h1>

                    <span class="tip">{{ movie.mdesc }}</span>

                </li>

            {% endfor %}




        </ul>

    </div>

    <div>

        {% if perpage_data.has_previous %}

            <a href="/movie/index/?num={{ perpage_data.previous_page_number }}">上一页</a>

        {% endif %}

        {% for n in pager.page_range %}

            {% if n < 11 %}

                <a href="/movie/index/?num={{ n }}">{{ n }}</a>&emsp;

            {% endif %}

        {% endfor %}

        {% if perpage_data.has_next %}

            <a href="/movie/index/?num={{ perpage_data.next_page_number }}">下一页</a>

        {% endif %}

    </div>

如图:

undefined

5、重启项目,如图:

undefined

你好:我的2025