我试图根据用户的状态设置WebAPI的分页。如果用户is_anonymous
他应该不能用查询参数设置页面大小。我试着用一个视图类来做这个。我可以用两个不同的视图类来实现,并限制对其中一个的访问,但我认为这不是一个好的解决方案。在
视图类:
class WeathermList(generics.ListAPIView):
queryset = WeatherMeasurements.objects.all()
serializer_class = WeatherMeasurementsSer
filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter,)
filter_class = WeatherMeasurementsFilter
ordering_fields = ('measure_datetime',)
ordering = ('measure_datetime',)
@property
def paginator(self):
"""
The paginator instance associated with the view, or `None`.
"""
if not hasattr(self, '_paginator'):
# import ipdb
# ipdb.set_trace()
if self.request.user.is_anonymous:
self._paginator = AnonymousPaginator
else:
self._paginator = RegisteredPaginator
return self._paginator
分页类:
^{pr2}$错误消息:
File ".../env/lib/python3.5/site-packages/rest_framework/generics.py", line 172, in paginate_queryset
return self.paginator.paginate_queryset(queryset, self.request, view=self)
TypeError: paginate_queryset() missing 1 required positional argument: 'request'
property paginator
最初在类GenericAPIView中声明。我不确定我是否能正确地实现它。当我使用pagination_class
设置它们时,我的两个自定义分页类都在工作
如果有任何帮助,我们将不胜感激。在
问题是:
self._paginator
需要一个paginator类实例,而不是类本身它应该是
AnonymousPaginator()
和RegisteredPaginator()
,而不是AnonymousPaginator
,RegisteredPaginator
。在相关问题 更多 >
编程相关推荐