[每当我向'apartment'端点发出'GET'请求时,都会收到'AssertionError'。我在没有分页的情况下尝试了此操作,但得到了响应,但是当我切换回使用分页时,出现了“ AssertionError”。
我已经遍历了代码库,并对照DRF的通用代码库进行了验证,我无法发现任何错误。我无法为自己的生活弄清楚哪里出了问题。
views.py
class ApartmentList(APIView,MyPaginationMixin):
authentication_classes = [TokenAuthentication]
permission_classes = [AllowAny]
apartments = Apartment.objects.all()
serializer = ApartmentSerializer
pagination_class = api_settings.DEFAULT_PAGINATION_CLASS
def get(self,request):
page = self.paginate_queryset(self.apartments)
if page is not None:
serializer = self.serializer(page, many=True)
return self.get_paginated_response(serializer.data)
mixins.py
class MyPaginationMixin(object):
@property
def paginator(self):
"""
The paginator instance associated with the view, or `None`.
"""
if not hasattr(self, '_paginator'):
if self.pagination_class is None:
self._paginator = None
else:
self._paginator = self.pagination_class()
return self._paginator
def paginate_queryset(self, queryset):
"""
Return a single page of results, or `None` if pagination
is disabled.
"""
if self.paginator is None:
return None
return self.paginator.paginate_queryset(
queryset, self.request, view=self)
def get_paginated_response(self, data):
"""
Return a paginated style `Response` object for the given
output data.
"""
assert self.paginator is not None
return self.paginator.get_paginated_response(data)
这里:
def get(self,request):
page = self.paginate_queryset(self.apartments)
if page is not None:
serializer = self.serializer(page, many=True)
return self.get_paginated_response(serializer.data)
您不处理page
为None
的情况。至于为什么会这样,请检查您的分页mixin类,并问问自己,让shuch mixin没有定义的分页类是否真的有意义...