参考链接:https://www.csdn.net/tags/MtTaMg5sMzA1NTM4LWJsb2cO0O0O.html
效果:by 不同参数来访问http://127.0.0.1:8000/EmployeeUserDef_drf/WCD/可以得到site的数据。
代码:
settings.py
INSTALLED_APPS = [
'rest_framework',
]
# Django Rest Framework框架设置信息
# 分页设置
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
# 每页显示多少条数据
'PAGE_SIZE': 1000
}
serializers.py
from rest_framework import serializers
from .models import EmployeeUser
# 定义ModelSerializer类
class EmployeeUserSerializer(serializers.ModelSerializer):
class Meta:
model = EmployeeUser
#fields = '__all__'
fields = ("site",
"employee_name",
"plantid",
"employee_id",
"employee_dept",
"turnoverrate_finished_or_not",
"Personal_goal_finished_or_not",
"Group_goal_finished_or_not",
"KPI_finished_or_not",
"competition_finished_or_not",
"workshop_finished_or_not",
"oneonone_finished_or_not",
"leadership_case_finished_or_not",
"ddi_training_finished_or_not",
"manager_training_finished_or_not",
)
views.py
PageNumberPagination()可以替换成PageNumberPaginator(PageNumberPagination),也可以使用默认的PageNumberPagination()
# page参数失效,默认返回前1000条数值
from rest_framework.pagination import PageNumberPagination
class PageNumberPaginator(PageNumberPagination):
page_size = 1000 # 每页显示10条数据
page_size_query_param = 'size' # 每页显示条数的参数名称
page_query_param = 'page' # 页码参数名称,比如page=3&size=10 第三页显示10条
max_page_size = 10 # 最大页码数量控制
@api_view(['GET'])
def EmployeeUserDef(request,site):
if request.method == 'GET':
q = EmployeeUser.objects.all().filter(site=site).order_by('id')
# 分页查询,需要在settings.py设置REST_FRAMEWORK属性
#pg = PageNumberPagination()
pg = PageNumberPaginator()
p = pg.paginate_queryset(queryset=q, request=request)
# 将分页后的数据传递MySerializer,生成JSON数据对象
serializer = EmployeeUserSerializer(instance=p, many=True)
# 返回对象Response由Django Rest Framework实现
return Response(serializer.data)
urls.py
path('EmployeeUserDef_drf/<site>/', views.EmployeeUserDef, name='EmployeeUserDef'),