gpt4 book ai didi

python - 在 Django Rest Framework 中为每个 View 定义分页 page_size

转载 作者:太空狗 更新时间:2023-10-29 20:58:08 32 4
gpt4 key购买 nike

自版本 3.3 以来,不再可能在 View 上定义 page_size,因为它已移至分页器类。 related deprecations

我们的 API 为不同的 View 定义了不同的 page_sizes,添加新的分页器子类只是为了覆盖 page_size 属性让人感觉模棱两可。我无法在 View 定义中实例化分页器类并使用实例化的 __init__ 方法 here .我可以覆盖它并使它成为一个方法,该方法返回一个使用正确参数实例化的实例,但由于它的名称不是 get_pagination_class,这可能不是一个好主意。

我的问题是,使用适当的 page_size 属性集动态创建分页器类的最简洁方法是什么?

我看过 this问题,我想避免这两种解决方案。

最佳答案

你可以实现一些相对干净的东西:


  • 假设您使用pagination_class 属性。
  • 假设您在类中保留 page_size 属性。

  1. 在您的 settings.py 中添加全局分页设置:

    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': default_page_size,

    您可以用它处理所有具有相同页面大小的 View 。

  2. 对于任何其他 View / View 集:

    class ACustomViewSet(mixins.ListModelMixin, 
    mixins.DestroyModelMixin,
    viewsets.GenericViewSet):

    pagination_class = PageNumberPagination
    page_size = N
    pagination_class.page_size = self.page_size

    或者您可以在一个方法中执行此操作:

    def list(self, request, *args, **kwargs):
    self.pagination_class.page_size = self.page_size
    ...

关于python - 在 Django Rest Framework 中为每个 View 定义分页 page_size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38568284/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com