Django自定义分页page函数(简洁)

最近在使用django框架,今天在做数据统计的时候用到了数据分页,第一时间看了django官方文档https://docs.djangoproject.com/zh-hans/2.1/topics/pagination/,django有自带的分页器自己试着使用了一下,感觉效果一般。所以就在网上找了一些有关django分页的文章,看了很多,各种方法都有但让我感觉最好的就是自定义分页函数,即可以很好的理解,也方便以后的使用。下面是函数介绍。

一、封装函数Page

class Page(object):
    def __init__(self, page_num, total_count,per_page=10, max_page=11):
        """
        :param page_num: 当前页码数
        :param total_count: 数据总数
        :param url_prefix: a标签href的前缀
        :param per_page: 每页显示多少条数据
        :param max_page: 页面上最多显示几个页码
        """
        self.url_prefix = url_prefix
        self.max_page = max_page
        # 总共需要多少页码来展示
        total_page, m = divmod(total_count, per_page)
        if m:
            total_page += 1
        self.total_page = total_page

        try:
            # 将取出的page转换为int类型
            page_num = int(page_num)
        except Exception as e:
            # 当输入的页码不是正经数字的时候 默认返回第一页的数据
            page_num = 1
        # 如果输入的页码数超过了最大的页码数,默认返回最后一页
        if page_num > total_page:
            page_num = total_page
        self.page_num = page_num

        # 定义两个变量保存数据从哪儿取到哪儿
        self.data_start = (page_num - 1) * 10
        self.data_end = page_num * 10

        # 页面上总共展示多少页码
        if total_page &
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Django 中可以使用分页器 Paginator 来实现数据库分页。具体实现步骤如下: 1. 在视图函数中使用 Paginator 对象进行分页设置: ```python from django.core.paginator import Paginator def my_view(request): # 获取数据 data_list = MyModel.objects.all() # 每页显示数量 per_page = 10 # 创建分页对象 paginator = Paginator(data_list, per_page) # 获取当前页码 page = request.GET.get('page') # 获取当前页的数据 data = paginator.get_page(page) # 渲染模板 return render(request, 'my_template.html', {'data': data}) ``` 上述代码中,首先获取数据列表 data_list,然后通过 Paginator 对象创建分页器 paginator,并设置每页显示数量为 per_page。在获取当前页码 page 后,通过 `get_page()` 方法获取当前页数据 data,并将数据传递给模板进行渲染。 2. 在模板中使用分页器对象进行渲染: ```html {% for item in data %} <!-- 显示数据 --> {% endfor %} <!-- 显示分页链接 --> <div class="pagination"> <span class="step-links"> {% if data.has_previous %} <a href="?page=1">« 第一页</a> <a href="?page={{ data.previous_page_number }}">上一页</a> {% endif %} <span class="current-page"> {{ data.number }} / {{ data.paginator.num_pages }} </span> {% if data.has_next %} <a href="?page={{ data.next_page_number }}">下一页</a> <a href="?page={{ data.paginator.num_pages }}">最后一页 »</a> {% endif %} </span> </div> ``` 在模板中,首先通过遍历 `data` 变量来显示当前页数据。然后,使用分页器对象的 `has_previous`、`previous_page_number`、`number`、`paginator.num_pages`、`has_next` 和 `next_page_number` 属性来生成分页链接,使用户可以通过链接跳转到其他页面。 以上就是 Django 中使用 Paginator 实现数据库分页的基本步骤。需要注意的是,具体使用方式可能会因个人习惯和项目需求而有所不同,建议查看官方文档并根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值