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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 下载安装Java教程

    下载安装Java教程初学Java,似乎安装有那么一点不同(也就多了添加环境变量哈哈哈),我也小小记录一下。    自我介绍:win10x641.下载Java  用于现在大多数使用者用的是java8,小白的我先安装java8好了,^w^。  下载地址:Java8|JavaSE  打开网址后,选择相应电脑操作系统的版本下载。2.安装Java  2.1双击安装包开始安装  2.2安装JDK,可选择安装路径。    这个JDK其实是有包含JRE的。…

    2022年7月8日
    22
  • stringbuffer判断是否为空

    stringbuffer判断是否为空

    2021年7月16日
    105
  • pychar激活码3月最新在线激活

    pychar激活码3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    48
  • 代码主题darcula_仿IntelliJ Darcula的Swing主题FlatLaf使用方法

    代码主题darcula_仿IntelliJ Darcula的Swing主题FlatLaf使用方法最近Sandeepin想写个基于JavaSwing的RSS阅读器练练手,不过Swing默认主题太丑了,切成系统原生的主题也不是非常好看,正好感觉开发时用的IDEA主题很不错,不管是Light还是Darcula,都符合现代UI的设计风格。自己仿界面肯定很难仿出来,于是网上找找有没有类似风格的SwingUI库。首先找到的是Mouse0w0开源的JavaFXDarculaTheme,不过这是Java…

    2022年6月27日
    93
  • 计算机复试面试问题(计算机面试常见问题)

    面试问题之编程语言1。C++的特点是什么?封装,继承,多态。支持面向对象和面向过程的开发。2.C++的异常处理机制?抛出异常和捕捉异常进行处理。(实际开发)3.c和c++,java的区别?c是纯过程,c++是对象加过程,java是纯面向对象的4.纯虚函数?被virtual修饰的成员函数,再基类不能实现,而他的实现放到派生类中实现。5.什么是内存泄漏?没有de…

    2022年4月15日
    54
  • BAPI List[通俗易懂]

    BAPI List[通俗易懂]NameoffunctionmoduleShorttextforfunctionmoduleBAPIsf.BORobj.BUS4003(AddrContPart)BAPI_CHARACT_GETLISTBAPIforCharacterist

    2022年7月24日
    2

发表回复

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

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