Django 分页器

Django 分页器

分页器
urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^page/', views.page),    # 路由到分页器函数
]

views.py

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

from hc import models

def test(request): user = models.UserInfo.ojbects.all() # 这里是获取数据库的数据 p = Paginator(user,3) # p = 实例化对象 (对象, 开头显示几条数据) print ('数据总数: ', p.count) #页码总数 print ('数据页数: ', p.num_pages) #当前页码 print ('range(x, y): ', p.page_range) #从多少页 到多少页 print ('是否有下一页: ', p.page(2).has_next()) #是否有下一页 print ('是否有上一页: ', p.page(2).has_previous()) #是否有上一页 print ('是否有其他页: ', p.page(2).has_other_pages()) #是否有其他页 print ('下一页的页码: ', p.page(2).next_page_number()) #下一页的页码 print ('上一页的页码: ', p.page(2).previous_page_number()) #上一页的页码 get_page = int(reuqest.GET.get('page',1)) #接收进来的是字符串,需要转换类型 #异常处理 try: user_page = p.page(get_page) #跳转当前页面 except PageNotAnInteger: user_page = p.page(1) #回到首页 except EmptyPage: user_page = p.page(p.num_pages) #回到当前页面 return render(request, 'page.html', locals()) 

template

<table>
    <thead>
        <tr> <th>用户名</th> <th>密码</th> <th>人名</th> </tr> </thead> <tbody> {% for item in user_page %} <tr> <td>{{item.username}}</td> <td>{{item.password}}</td> <td>{{item.name}}</td> </tr> {% endfor %} </tbody> </table> <div> <ul class="pagination" id="pager"> {% if user_page.has_previous %} <li class="previous"><a href="/page/?page={{user_page.previous_page_number}}">上一页</a></li> {% else %} <li class="previous disavled"><a href="#">上一页</a></li> {% endif %} {% for num in p.page_range %} {% if num == page %} <li class="item active"><a href="/page/?page={{ num }}">{{ num }}</a></li> {% else %} <li class="item"><a href="/page/?page={{ num }}">{{ num }}</a></li> {% endif %} {% endfor %} {% if user_page.has_next %} <li class="next"><a href="/page/?page={{ user_page.next_page_number }}">下一页</a></li> {% else %} <li class="next disabled"><a href="#">下一页</a></li> {% endif %} </ul> </div>

猜你喜欢

转载自www.cnblogs.com/huidou/p/10757873.html