Nir*_*yan 4 django pagination django-rest-framework
我已经编写了如下代码片段,我需要在此实现分页,请让我知道它是如何可能的.另外由于某些原因,我想只使用基于功能的视图.
@api_view(['GET',])
@permission_classes([AllowAny,])
def PersonView(request):
context={'request': request}
person_objects = Person.objects.all()
if len(person_objects)> 0:
person_data = PersonSerializer(person_objects,many=True,context=context)
return Response(person_data.data,status=status.HTTP_200_OK)
else:
return Response({},status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
Geo*_*cob 19
http://www.django-rest-framework.org/api-guide/pagination/
from rest_framework.pagination import PageNumberPagination
@api_view(['GET',])
@permission_classes([AllowAny,])
def PersonView(request):
paginator = PageNumberPagination()
paginator.page_size = 10
person_objects = Person.objects.all()
result_page = paginator.paginate_queryset(person_objects, request)
serializer = PersonSerializer(result_page, many=True)
return paginator.get_paginated_response(serializer.data)
Run Code Online (Sandbox Code Playgroud)
您还可以通过重写 PageNumberPagination 来定义自定义分页类
\n\n分页.py
\n\nfrom rest_framework import pagination\nclass StandardResultsSetPagination(pagination.PageNumberPagination):\n page_size = 10\n page_query_param = \'page\'\n page_size_query_param = \'per_page\'\n max_page_size = 1000\nRun Code Online (Sandbox Code Playgroud)\n\n这将有助于定义
\n\n\n\n\npage_size、页面查询自定义参数和max_page_size
\n
视图.py
\n\nfrom rest_api.pagination import StandardResultsSetPagination\n\n@api_view([\'GET\',])\n@permission_classes([AllowAny,])\ndef PersonView(request):\n person_objects = Person.objects.all()\n if len(person_objects)> 0:\n paginator = StandardResultsSetPagination()\n result_page = paginator.paginate_queryset(person_objects, request)\n serializer = PersonSerializer(result_page, many=True)\n return paginator.get_paginated_response(serializer.data)\n else:\n return Response({},status=status.HTTP_200_OK)\nRun Code Online (Sandbox Code Playgroud)\n\n例如: \n请求
\n\nGET https://api.example.org/persons/?page=1&per_page=10\nRun Code Online (Sandbox Code Playgroud)\n\n回复
\n\nHTTP 200 OK\n{\n "count": 1023\n "next": "https://api.example.org/persons/?page=2&per_page=10",\n "previous": null,\n "results": [\n \xe2\x80\xa6\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |