DRF后台接收参数进行分页接口查询
from rest_framework.response import Response
from rest_framework.views import APIView
from .models import taskDateDB
from .Serializer import taskDateDB_Serializer
class get_paging(APIView):
"""获取分页数据"""
def get(self,request):
'''
:param page: 页码
:param amount: 每页的量
:return: total :全部的条数
'''
page = int(request.GET.get("page"))
amount = int(request.GET.get("amount").strip('/'))
endCount = page * amount
startCount = endCount - amount
item = {}
try:
total = taskDateDB.objects.all().count()
if endCount < total:
result = taskDateDB.objects.all()[startCount:endCount]
else:
result = taskDateDB.objects.all()[startCount:]
resu_lt = []
for _ in result:
items = taskDateDB_Serializer(_)
resu_lt.append(items.data)
item["data"] = resu_lt
item["total"] = total
item["msg"] = "sucess"
item["code"] = 200
except Exception as e:
item["msg"] = "数据查询失败,请检查值"
item["code"] = 200
return Response(item)
from rest_framework import serializers
class taskDateDB_Serializer(serializers.Serializer):
'''任务模型序列器 '''
taskName = serializers.CharField(max_length=255)
taskDescription = serializers.CharField()
ipAddr = serializers.CharField(max_length=255)
taskDatebase = serializers.CharField(max_length=255)
taskTable = serializers.CharField(max_length=255)
gitaddr = serializers.CharField(max_length=255)
VUE axios拦截器配置
import qs from "qs";
import Vue from 'vue'
import axios from "axios";
import {Message,Loading} from "element-ui";
let pub = 'http://127.0.0.1:8000/';
let needLoadingRequestCount = 0;
let loading;
export function showFullScreenLoading() {
if(needLoadingRequestCount === 0){
startLoading()
}
needLoadingRequestCount ++
}
export function tryHideFullScreenLoading() {
if(needLoadingRequestCount <= 0) return;
needLoadingRequestCount--;
if(needLoadingRequestCount === 0){
endLoading()
}
}
function startLoading() {
loading = Loading.service({
lock:true,
text:'加载中。。。。',
spinner:'el-icon-loading',
background:'rgba(0,0,0,0.7)'
})
}
function endLoading() {
loading.close()
}
const service = axios.create({
baseURL:pub,
timeout:30000,
});
service.interceptors.request.use(config=>{
showFullScreenLoading();
config.headers['Content-Type'] = 'application/json;charset=UTF-8';
if(config.method==='post'){
config.data=JSON.stringify(config.data);
}
return config
},error => {
Message.error(error);
Promise.reject(error)
});
service.interceptors.response.use(response=>{
tryHideFullScreenLoading();
return response
},error => {
tryHideFullScreenLoading();
return Promise.reject(error)
});
export default service
import service from './http'
export const post = (url,data) =>{
return service({
url:url,
method:'post',
data
})
};
export const getPersonInfo = (url)=>{
return service({
url:url,
method:'get',
})
};