fod*_*ma1 8 python django pagination django-rest-framework
从版本开始3.3,不再可能在视图上定义page_size,因为它已移至paginator类.相关的弃用
我们的API为不同的视图定义了不同的page_sizes,添加新的paginator子类只是为了覆盖page_size属性感觉不明确.我无法在视图定义中实例化paginator类,并在此处__init__实例化时使用该方法.我可以覆盖它并使它成为一个方法,返回一个用正确的参数实例化的实例,但由于它的名字不是,可能它不是一个好主意.get_pagination_class
我的问题是动态创建具有适当page_size属性集的paginator类的最简洁方法是什么?
我已经看到了这个问题,我想避免它的两个解决方案.
你可以实现相对干净的东西:
pagination_class属性设置每个类的分页
.page_size属性保留在类中.在您settings.py添加全局分页设置中:
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': default_page_size,
Run Code Online (Sandbox Code Playgroud)
您可以处理具有相同页面大小的所有视图.
对于任何其他视图/视图集:
class ACustomViewSet(mixins.ListModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet):
pagination_class = PageNumberPagination
page_size = N
pagination_class.page_size = self.page_size
Run Code Online (Sandbox Code Playgroud)
或者您可以在方法中执行此操作:
def list(self, request, *args, **kwargs):
self.pagination_class.page_size = self.page_size
...
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |