django自带的分页功能

django自带的分页功能

django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴.

  • django视图部分的代码.(注释才是重点)

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

class Usersinfo(View):
    def get(self, request):
        result = UserInfo.objects.all()
        # 获取当前的页码:
        current_page = request.GET.get('page')
        paginator = Paginator(result, 10)

        # 当前在前端显示的页码
        try:
            posts = paginator.page(current_page)
        # 含有属性:
        # per_page:每页显示条数
        # count数据总数
        # num_pages:总页数
        # page_range:总页数索引范围
        # page:page对象
        # 如果输入的页面不是整数,就返回到第一页
        except PageNotAnInteger as e:
            posts = paginator.page(1)
            
        #如果输入的页码数负数,则显示到最后一页
        except EmptyPage as e:
            posts= paginator.page(paginator.num_pages)
            # has_next              是否有下一页
            # next_page_number      下一页页码
            # has_previous          是否有上一页
            # previous_page_number  上一页页码
            # object_list           分页之后的数据列表
            # number                当前页
            # paginator             paginator对象
        return render(request, 'user.html', {'posts': posts})
  • url配置部分的代码:

urlpatterns = [
    path('student/',views.Usersinfo.as_view())
]

前端部分的代码:

<body>
{% for row in posts.object_list %}
    <li>{{ row.name }}-----{{ row.age }}</li>
{% endfor %}
<div>
    <span>
        #如果有下一页,点击下一页时就会翻页
        {% if posts.has_previous %}
            <a href="?page={{ posts.previous_page_number }}">上一页</a>
        {% endif %}
    </span>
    <span>
            Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
    </span>
    <span>
        {% if posts.has_next %}
            <a href="?page={{ posts.next_page_number }}">下一页</a>
        {% endif %}
    </span>
</div>
</body>

希望可以帮到各位!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值