django实现分页_vue json

django实现分页_vue json这里提供两种分页方法一种是手写分页,不常用,但是明白一下分页的逻辑实现第二种是用heyui提供的组件.很多功能都给封装好了,用起来也比较美观.手写分页后端接口classGoodList(APIView):defget(self,request):#当前页page=int(request.GET.get(‘page’,1))…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

这里提供两种分页方法

一种是手写分页,不常用,但是明白一下分页的逻辑实现

第二种是用heyui提供的组件.很多功能都给封装好了,用起来也比较美观.



手写分页

后端接口

class GoodList(APIView):
    def get(self, request):
        # 当前页
        page = int(request.GET.get('page', 1))
        # 一页有多少条商品
        size = int(request.GET.get('size', 1))

        # 定义从哪里开始切片
        data_start = (page - 1) * size

        # 定义切到哪
        data_end = page * size

        #查询数据
        goodslist=Goods.objects.all()[data_start:data_end]

        #查询总数量
        count=Goods.objects.count()

        # 序列化操作
        goods_ser=GoodsSer(goodslist,many=True)
        # 返回响应
        return Response({ 
   
            'total':count,
            'data':goods_ser.data
        })

前端页面

<template>
......
          <!--自主分页-->
          <div>
              <!-- v-show 判断当前页数是否有需要显示上或下一页 -->
            <Button v-show="lastpage" @click="getdata(lastpage)">上一页</Button>
            <Button v-for="index in all" @click="getdata(index)">{
  
  {index}}</Button>
            <Button v-show="nextpage" @click="getdata(nextpage)">下一页</Button>
          </div>
</template>


<script>


  export default {
    data() {
      return {
        //自主分页
        total: 0,//商品总数
        curpage: 1,//当前页
        all: 0,//总页数
        lastpage: 0,//上一页
        nextpage: 0,//下一页
        size: 2,//每页显示多少
      
        //商品列表
        goodlist: '',
          
          
    mounted() {
      //调用自主分请求
      this.getdata(1);
    },
          
    methods: {
      //自主分页接口
      getdata: function (mypage) {
        this.axios.get('http://localhost:8000/goodlist/', {
          params: {
            page: mypage,
            size: this.size
          }
        })
          .then(res => {
            this.goodlist = res.data.data;
            console.log(res.data.data);

            //判断上一页
            if (mypage == 1) {
              this.lastpage = 0;
            } else {
              this.lastpage = mypage - 1
            }

            // 计算总页数   Math.ceil  向上取整
            this.all = Math.ceil(res.data.total / this.size);
            //判断下一页
            if (mypage == this.all) {
              this.nextpage = 0
            } else {
              this.nextpage = mypage + 1
            }
          });
      },
    }
  }


</script>

<style>


</style>

heyui 组件库

后端代码不用做修改.可以直接复用.heyui前端就相对来说简单了许多.

<template>
  ......
          <!--heyui分页-->
          <br>
        </div>
        <div>
            <!-- layout可以自定义控制显示那些组件和顺序.-->
          <Pagination v-model="pagination" @change="change" layout="sizes,pager,jumper" align="center">

          </Pagination>
            
</template>


<script>

  export default {
    data() {
      return {
        //分页器变量
        pagination: {
          page: 1,
          size: 3,
          total: 5
        },
        //商品列表
        goodlist: '',
    },
          
    mounted() {
      //请求商品接口返回数据
      this.axios.get('http://localhost:8000/goodlist/', {params: {page: 1, size: 3}})
        .then(res => {
          this.goodlist = res.data.data;
          console.log(res.data.data)
        });
    },
    methods: {
      //分页器事件
      change: function () {
        //二次请求
        this.axios.get('http://localhost:8000/goodlist/', {
          params: {
            page: this.pagination.page,
            size: this.pagination.size
          }
        })
          .then(res => {
            this.goodlist = res.data.data;
            console.log(res.data.data)
          });
      },
    }
  }


</script>

<style>


</style>

两种分页的效果.上边的是heyui组件,下边是手写分页器.
在这里插入图片描述
HEY UI 分页文档:https://www.heyui.top/component/data/view/page

Element 组件文档:https://element.eleme.cn/#/zh-CN/component/installation

功能多多 各自挖掘吧.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187285.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月19日 下午11:40
下一篇 2026年4月19日 下午11:46


相关推荐

  • 圆桌排序公式_大圆桌怎么坐

    圆桌排序公式_大圆桌怎么坐假设有来自 m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为 ri(i=1,2,…,m)。会议餐厅共有 n 张餐桌,每张餐桌可容纳 ci(i=1,2,…,n) 个代表就餐。为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。输入格式第 1 行有 2 个正整数 m 和 n,m 表示单位数,n 表示餐桌数。第 2 行有 m 个正整数,分别表示每个单位的代表数 ri。第 3 行有 n 个正整数,分别表示每个餐桌的容量 ci。输

    2022年8月10日
    6
  • 使用Apache服务部署静态网站

    1.网站服务程序windows系统中默认Web服务程序是IIS(InternetInformationServices),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能

    2021年12月28日
    44
  • 时钟模块ds1302的使用软件_ds1302时钟程序详解

    时钟模块ds1302的使用软件_ds1302时钟程序详解  刚刚学习了如何使用ds1302这个时钟芯片的使用,现在我把学习的过程分享出来,虽然整体的过程感觉不算难,但是仍然有难解之处至今未明,因为没有去实际验证,所以也不能确定到底是什么原因。  1.首先,查找ds1302手册,可以在21ic这个网站上下载。如果嫌英文版的自己翻译的很难受(这里还是建议大家硬着头皮看英文版的,毕竟是有好处的,你说呢?),可以在网上找中文版的。  2.通过手册…

    2025年7月1日
    4
  • Linux系统ftp服务器搭建

    Linux系统ftp服务器搭建1 安装 ftp yum yinstallvsft 启动 ftp 服务 systemctlres 查看网络端口使用 netstat tunlp 可以看到 vsftp 对应使用的 21 端口 3 查看配置文件 vim etc vsftpd vsftpd conf 按 i 键进入编辑模式 将 anonymous enable NO 修改为 YES 开启匿名用户连接 就是不用验证账号密码 按 键输入 wq 保存退出 每次修改了信息都要重启服务 才能生

    2026年3月17日
    1
  • 新手必看!超级千问语音设计世界完整使用教程,从部署到生成全流程

    新手必看!超级千问语音设计世界完整使用教程,从部署到生成全流程

    2026年3月12日
    3
  • 从高考落榜生到网络专家

    从高考落榜生到网络专家成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走 向成功的普通人——凌晨两点半,早已习惯了一个人坐在电脑前的我,望着屏幕,任思绪在暗夜的包容 下静静流淌,时光仿佛又定格在三年多前的那一刻:“283分”。那是被中国万千学子称为“黑色七 月”中的一天,下班回家的母亲从家门打开后说出的一个数字,虽然早知道自己不会考上大学,但如此 的成绩也多少出乎自己

    2025年8月22日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号