Vue + Django + BootstrapVue实现分页,前端后台实例讲解

1、后台Django代码

def storage(req):
    '''
    存储图片接口:
        1、根据roomid查询出数据
    '''
    # 从数据库选出所需数据
    roomid = req['roomid']
    data_list = Memory.objects.filter(roomid=roomid).order_by('-addtime')
    # 构造分页器
    page_robot = Paginator(data_list, 2)
    page_num = req.get('page')   # 根据page的值得到对应的数据
    try:
        data_list = page_robot.page(page_num)
    except InvalidPage:
        data_list = page_robot.page(1)
    except ValueError:
        data_list = page_robot.page(1)
    except EmptyPage:
        data_list = page_robot.page(page_robot.page_num)
    except PageNotAnInteger:
        data_list = page_robot.page(1)
    serializer = MemorySerializer(data_list, many=True).data
    context = {"status": "success", "data": serializer}
    return context
2、前端组件Vue代码

<template>
  <div>
    <b-container class="bv-example-row">
      <b-row>
        <b-col><b-table striped hover :items="items.data"></b-table></b-col>
      </b-row>
      <b-row>
        <b-col>
          1、每次点触发一下getGoodsList()函数,改变一下page码调接口
          <b-pagination size="md" :total-rows="100" v-model="currentPage" :per-page="10"  align="right"  @click.native="getGoodsList()"></b-pagination>
          <div>第: {{ currentPage }}页</div>
        </b-col>
      </b-row>
    </b-container>

    {{ items }}

  </div>
</template>

<script>
    import axios from 'axios'

    export default {
      name: "PageLayout",
      data(){
        return {

          roomid: '1',
          // 4、定义一个列表存储返回数据
          items: [],
          // 5、设置默认页码
          currentPage: 1,
        }

      },
      mounted(){
        // 3、初始化一下接口,这样呢在加载的时候就会自动调用接口
        this.getGoodsList();
      },
      methods: {
        // 2、写一个函数调接口getGoodsList
        getGoodsList: function() {
          axios.get("http://192.168.0.144:9999/skyapi/storage/", {
            params: { roomid:this.roomid, page:this.currentPage }
          }).then(res => {
            this.items = res.data
          })
            .catch((error) => {
              this.msg = error
            })
        },

      }
    }
</script>

<style scoped>

</style>


猜你喜欢

转载自blog.csdn.net/qq_33867131/article/details/81539915