python django paginator分页

写一个blog的时候用到了分页,纪录起来。

from django.core.paginator import Paginator

就是用到这个Paginator类

Paginator(object_list, per_page, [orphans=0, allow_empty_first_page=True])

参数object_list (数据总量)和 per_page(每页的数据量)为必填参数

orphans(最后一页对象的最少数目,默认为0) 如果想避免最后一页显示太少。则可以使用这个值。 那么最后一页的数据,自动被前移一页。比如总共23个数据。每页显示 10.orphans=3 那么,第一页为10,第二页为13.

allow_empty_first_page(表示首页是否可以为空)如果是 False 而且``object_list`` 为空,那么会触发 EmptyPage 异常。


简单用法

view层引用:

from django.core.paginator import Paginator                                      
                                                                                 
def index(request):                                                              
    home_display_columns = Category.objects.filter(home_display=True)            
    nav_display_columns = Category.objects.filter(nav_display=True)              
                                                                                 
    index_article = Article.objects.filter(published=1).order_by('-pub_date')
                                                                                 
    limit = 2                                                                    
    paginator = Paginator(index_article, limit)  #每页两条数据                                
    page = request.GET.get('page', 1)  #QueryDict objects,如果没有对应的page键,就返回默认1。                                          
    item_info = paginator.page(page)  #根据索引page,返回该page数据,如果不存在,引起 InvalidPage异常                                           
                                                                                 
    return render(request, 'index.html', {                                       
        'home_display_columns': home_display_columns,                            
        'nav_display_columns': nav_display_columns,                              
        'index_article': index_article,                                          
        'item_info': item_info,                                                     
    })

再看模版层, 用的semantic ui

template:


{% endblock content %} 
一个基本的分页模块就完成了。

python django paginator分页_第1张图片

你可能感兴趣的:(django笔记)