我有一个基于Django函数的API,可以输入页码和每页的大小。这是我的密码。
@api_view(['POST'])
def attendance_all_get_list_by_page(request):
# ----- YAML below for Swagger -----
"""
description: attendance_all_get_list_by_page
parameters:
- name: page
type: integer
required: true
location: form
- name: page_limit
type: integer
required: true
location: form
"""
attendance_list = Attendance.objects.all().order_by('id')
page = request.GET.get('page', request.POST['page'])
paginator = Paginator(attendance_list, request.POST['page_limit'])
try:
attendances = paginator.page(page)
except PageNotAnInteger:
attendances = paginator.page(request.POST['page'])
except EmptyPage:
attendances = paginator.page(paginator.num_pages)
serializer = AttendanceSerializer(list(attendances), many=True)
data = serializer.data[:]
return Response(data, status=status.HTTP_200_OK)
我的序列化程序:
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ("id", "username")
class AttendanceSerializer(serializers.ModelSerializer):
employee = EmployeeSerializer(many=False, read_only=True)
class Meta:
model = Attendance
fields = ('id','employee','created_at')
假设我有
16,17,18,19
因此,例如,当page=2 page\u limit=2时,它将显示以下内容(这应该是4条记录的最后一页)
[
{
"id": 18,
"employee": {
"id": 16,
"username": "haha"
},
"created_at": "2017-12-28T03:29:29.698339Z"
},
{
"id": 19,
"employee": {
"id": 16,
"username": "haha"
},
"created_at": "2017-12-28T03:38:53.639749Z"
}
]
如果我这样做了(page=3 page\u limit=2)或(page=10 page\u limit=2),它仍将显示
[
{
“id”:18,
“员工”:{
“id”:16,
“用户名”:“哈哈”
},
“created\u at”:“2017-12-28T03:29:29.698339Z”
},
{
“id”:19,
“员工”:{
“id”:16,
“用户名”:“哈哈”
},
“created\u at”:“2017-12-28T03:38:53.639749Z”
}
]
预期结果应为
[]
我的分页有什么问题,上一页有什么东西在影响我。我想让最后一页显示最后一页的结果,但之后应该是空记录列表。