elementui+django实现分页效果

elementui+django实现分页效果

前端:

template:

<el-pagination
      background		
      @current-change='currentChange'
      layout="prev, pager, next"
     :page-size='size'
     :current-page.sync='cur_page'
     :total="count">
</el-pagination>

script:

methods: {
	currentChange(currentPage){
	this.page=currentPage;
	this.getContestLoad();
			},
	getContestLoad(){
	//get请求获取参数
	this.getRequest('/api/ojs/contestloads/' + this.$route.params.uid +'/?page='+this.page+'&size='+this.size,this.val).then(resp => {
	if (resp) {//设置表内容
	this.tableData = resp.data;
	this.count=resp.count;	//设置分页总数
	}
	})
	},
},
data() {
	return {
	cur_page:1,			//光标指向页
	count:0,			//数据总数
	page:1,				//当前数据页
	size:15,			//每页数据数量
	}
},

后端:

#基于APIView自定义的分页
class MyPage(APIView):
    def get(self, request):
        # 获取所有数据集
        books = models.Book.objects.all()

        # 对数据集进行分页,可以是自己配置了参数的分页器
        paginator = CommonPageNumberPagination()

        # 获取分页过后的数据
        qs = paginator.paginate_queryset(books, request, self)

        # 对数据进行序列化,多条数据需要添加 many=True
        res = serializer.BookSerializer(qs, many=True)

        # 返回的方式一,只返回分页后的结果
        # return Response(res.data)

        # 返回方式二,自己配置返回的其他信息,例如上一页下一页
        # return Response({
        #     'count': books.count(),
        #     'next': paginator.get_next_link(),
        #     'previous': paginator.get_previous_link(),
        #     'results': res.data
        # })

        # 返回方式三,使用方法自动返回类似于方式二的内容
        return paginator.get_paginated_response(res.data)
posted @ 2022-08-13 20:05  Suki_Sugar  阅读(224)  评论(0编辑  收藏  举报
Live2D