python-Django页码翻页效果展示

我爱海鲸 2021-05-02 02:34:16 python

简介翻页效果优化

1、初始项目,python-Django框架封装的分页方式


2、修改请求的方法逻辑:

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)



    #每页开始页码

    begin = (n-int(math.ceil(10.0/2)))

    if begin<1:

        begin = 1


    # 每页结束页码

    end = begin+9

    if end >pager.num_pages:

        end = pager.num_pages


    if end <=10:

        begin = 1

    else:

        begin = end -9


    pagelist = range(begin,end+1)


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

如图:

undefined

3、修改前端快标签页面逻辑:

    <div>

        <a href="/movie/index/?num=1">首页</a>&emsp;

        {% 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 %}#}

        {% for n in pagelist %}

            {% if currentPage == n %}

                <a href="/movie/index/?num={{ n }}" style="font-size: 28px;color:red;">{{ n }}</a>&emsp;

            {% else %}

                <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 %}

        &emsp;<a href="/movie/index/?num={{ pager.num_pages}}">末页</a>

    </div>

如图:

undefined

 

4、重启项目,访问项目,如图:

undefined

你好:我的2025