博客信息

Python Django 模型层(Django分页)

发布时间:『 2019-08-06 08:08』  博客类别:Python  阅读(728)

本篇博客采用Django内置的分页类进行分页


相关代码

添加子路由

urlpatterns = [
    url(r'^$', views.list_view),
    url(r'^django_pager/', views.django_list_view)
]


添加视图方法

from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
#Django分页
def django_list_view(request):
    #获取当前页码数
    num = request.GET.get('page',1)
    n = int(num)

    #查询所有数据
    movies = Movie.objects.all()

    #创建分页器对象
    pager = Paginator(movies,10)

    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,'django_list.html',{'pager':pager,'per_page_data':perpage_data,'page_list':pagelist,'curr_page':n})


templete(django_list.html)

<div class="span_2_800">
    <div id="tab_tit_list"><span><a rel="nofollow"><b>科幻片</b> 播放列表</a></span></div>
    <div class="tit_r_t" id="list_check"><a class="poster_c" id="poster" href="javascript:poster()">海报</a><a id="list"
                                                                                                             href="javascript:list();location.reload()">列表</a>
    </div>
    <ul class="list_5" id="list_con">
        <script type="text/javascript" language="javascript"></script>
    </ul>
    <ul class="list_5" id="list_con">
        <script type="text/javascript"></script>

        {% for movie in per_page_data %}
            <li><a href="" target="_blank"><img
                    src="{{ movie.mimg }}" width="120" height="170" alt="哥斯拉1"></a>
                <div class="info"><a href="" class="tit" target="_blank"
                                     title="哥斯拉1">{{ movie.mname }}</a><span class="verbg"></span>
                    <span class="ver">高清DVD</span>
                    <b>评分:<strong>6</strong><em>地区:美国<i>  |  年代:1998</i></em></b>
                    <i>导演:罗兰·艾默里奇</i><br>主演:马修·布鲁德里克、汉克·阿扎.. <br><i>讲述了一个完全不同的故事:因为核试验气候异常,使一个高90英尺的庞大怪物复活,整个纽约陷入一片混乱。科学家、新闻记者、电视台摄影师、军人和保险公司的核查员,联合起来对付它。因为它造成的恐慌和破坏实在..</i>
                </div>
            </li>
        {% endfor %}

    </ul>
    <div class="pages">
        <a href="/movie/django_pager/?page=1">首页</a> 
        {% if perpage_data.has_previous %}
             <a href="/movie/django_pager/?page={{ per_page_data.previous_page_number }}">上一页</a>
        {% endif %}
        {#        {% for n in pager.page_range %}#}
        {#            {% if n < 11 %}#}
        {#                <a href="/movie/index/?num={{ n }}">{{ n }}</a> #}
        {#            {% endif %}#}
        {#        {% endfor %}#}
        {% for n in page_list %}
            {% if curr_page == n %}
                <a href="/movie/django_pager/?page={{ n }}" style="font-size: 28px;color:red;">{{ n }}</a> 
            {% else %}
                <a href="/movie/django_pager/?page={{ n }}">{{ n }}</a> 
            {% endif %}

        {% endfor %}
        {% if per_page_data.has_next %}
            <a href="/movie/django_pager/?page={{ per_page_data.next_page_number }}">下一页</a>
        {% endif %}
         <a href="/movie/django_pager/?page={{ pager.num_pages }}">末页</a>
    </div>
</div>


测试截图

小李飞刀_Python



over......


关键字:     Python       Django  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有