Django原生翻页

Django翻页

在使用django时,我们难免会遇到翻页的情况,下面记录一下我的翻页的学习

#这里是我进行翻页的views.py

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


def users(request):              #这里是自己编写的获取用户信息的函数
    user_list = models.UserInfo.objects.all()    #query用户的列表
    current_page = request.GET.get('p')          #使用get方法来获取翻页的页数
    paginator = Paginator(user_list,10)          #Paginator生成一个对象,然后传入queryset,
    try:                                         #以及每页显示的个数,这里每页显示十个
        page_obj = paginator.page(current_page)  #根据get方法取到的数字显示页数
    except EmptyPage as e:                #如果get方法获取了一个没有的页数则显示第一页
        page_obj = paginator.page(1)
    except PageNotAnInteger as e:         #传入一个字符串也显示第一页
        page_obj = paginator.page(1)
    return render(request,'users.html',
                  {'page_obj':page_obj})    返回page_obj对象

下面是html的模版


<body>
      <table>
          <thead>
          <tr>
              <th>用户名</th>
              <th>密码</th>     #这里是表头
              <th>邮箱</th>
          </tr>
          </thead>
          <tbody>
          {% for row in page_obj.object_list %}  #循环获取数据
          <tr>
              <td>{{ row.username }}</td>
              <td>{{ row.password }}</td>
              <td>{{ row.email }}</td>
          </tr>
          {% endfor %}
          </tbody>
      </table>
        <div>
            {% if page_obj.has_previous %} #如果这一页有上一页,则点击可跳转
            <a href="/users?p={{page_obj.previous_page_number }}">上一页</a>
            {% else %}
               <a href="#">上一页</a>    #没有则不能跳转
            {% endif %}

            {% for i in page_obj.paginator.page_range %}
            <a href="/users?p={{ i }}">{{i}}</a>  #中间的页码,可以跳转
            {% endfor%}

            {% if page_obj.has_next %}        #此页有下一页也继续跳转
            <a href="/users?p={{page_obj.next_page_number }}">下一页</a>
            {% else %}
               <a href="#">一页</a>
            {% endif %}

        </div>
        <span>
            {{ page_obj.number }}/{{ page_obj.paginator.num_pages }} #当前页数/总页数
        </span>
</body>

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值