Django分页:使用django.core.paginator模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django分页:使用django.core.paginator模块相关的知识,希望对你有一定的参考价值。

#导入模块

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


#获取使用paginator函数分页集中sql_result,每25条为一页

#sql_result 是元组数据


paginator = Paginator(sql_result, 25)                                      

#获取分页的数量

page_sum = paginator.num_pages                                                                                        

after_range_num = 3                                                 

before_range_num = 9                                               

try:                                        

        page = int(request.GET.get(‘page‘, ‘1‘))                                                                         

except ValueError:                                                                                       

        page = 1                                                                                                          

try:   

        #建立一个触点,包含sql_result的结果,传入html,使用for语句遍历出最终结果(contacts.object_list 代替原始的sql_result)

        contacts = paginator.page(page)                                 

except PageNotAnInteger:                                              

        contacts = paginator.page(1)                                     

except EmptyPage:                                                      

        contacts = paginator.page(paginator.num_pages)                                                                                   

#页面显示数据

if page >= after_range_num:                                             

        page_range = paginator.page_range[page-after_range_num:page+before_range_num]                                                        

else:                                                         

page_range = paginator.page_range[0:int(page)+before_range_num]                


return render_to_response(‘index.html‘, {‘contacts‘:contacts, ‘page_sum‘:page_sum})

        

#下面是html内容

#展现数据的方式

<table border=‘1‘ cellpadding=‘3‘ cellspacing=‘0‘ align=‘center‘>                 

        {% for row in contacts.object_list %}  #使用contacts.object_list 替代sql_result                         

                <tr> 

                {% for v in row %}                                                    <td>{{v}}</td> 

                {% endfor %}  

                </tr> 

        {% endfor%}     

</table><br>



#分页栏

<span> 

        {% if contacts.has_previous %}   

                <a href="?page=1">首页</a> <a href="?page={{contacts.previous_page_number}}">上一页</a> 

        {% endif %}                                                                 

        {% for p in page_range %} 

                {% ifequal p contacts.number %} 

                <span>{{p}}</span>       

                {% else %}   

                <a href="?page={{p}}">{{p}}</a> 

                {% endifequal %}     

        {% endfor %}     

    

        {% if contacts.has_next %}                                             #尾页转到最后页,也就是统计页数的个数                                                               

                <a href="?page={{contacts.next_page_number}}">下一页</a> <a href="?page={{page_sum}}">尾页</a>                               

        {% endif%}  

</span><br><br>                                                                                                                              


本文出自 “python小周” 博客,请务必保留此出处http://wowoo1121.blog.51cto.com/6517278/1740736

以上是关于Django分页:使用django.core.paginator模块的主要内容,如果未能解决你的问题,请参考以下文章

Django分页:使用django.core.paginator模块

Django 使用分页

Django:使用 urls.py 进行分页

Django框架(十四)—— Django分页组件

Django框架(十五)—— Django分页组件

django分页器paginator使用简单说明