Vue + Django + BootstrapVue实现分页,前端后台实例讲解
1、后台Django代码def storage(req):'''存储图片接口:1、根据roomid查询出数据'''# 从数据库选出所需数据roomid = req['roomid']data_list = Memory.objects.filter(roomid=roomid).order_by('-addtime...
·
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>
更多推荐
已为社区贡献7条内容
所有评论(0)