【发布时间】:2019-11-06 02:44:37
【问题描述】:
我已经使用 Django Rest Framework 在 Python 中编写了一个代码来从数据库(MySql)中获取数据并使用分页(LimitOffSetPagination)在浏览器中查看它。但是它不能正常工作。但是当我使用 PageNumberPagination 时工作得很好。所以我发布了我的新代码。我的代码的注释部分实际上是针对PageNumberPagination。所以只是忽略它。请告诉我所需的必要更改并帮助我。即将出现的错误是:
异常值:index() 缺少 1 个必需的位置参数: '请求'
view.py
from rest_framework.pagination import PageNumberPagination
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from rest_framework.pagination import LimitOffsetPagination
@api_view(['GET','POST'])
def index(self, request):
if request.method=='GET':
all_dataobj=fetchdata.objects.all()
page = self.paginate_queryset(all_dataobj)
if page is not None:
pserializer = self.get_fetchdataSerializers(page, many=True)
return self.get_paginated_response(pserializer.data)
pserializer = self.get_fetchdataSerializers(all_dataobj, many=True)
return Response(pserializer.data)
# paginator = StandardResultsSetPagination()
# result_page = paginator.paginate_queryset(all_dataobj, request)
# pserializer=fetchdataSerializers(result_page,many=True)
# return paginator.get_paginated_response(pserializer.data)
elif request.method=='POST':
serializer=fetchdataSerializers(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS':
'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 10
}
urls.py
urlpatterns = [
path('', m.index, name='index'),
]
我什至发布了我之前用于 PageNumberPagination 的 pagination.py 文件。如果需要进行任何必要的更改,请建议我,或者我应该将文件作为一个整体删除????
分页.py
from rest_framework import pagination
class StandardResultsSetPagination(pagination.PageNumberPagination):
page_size = 10
page_query_param = 'page'
page_size_query_param = 'per_page'
max_page_size = 1000
【问题讨论】:
标签: django python-3.x pagination django-rest-framework