中级覆盖每个类的分页样式和设置分页

覆盖分页风格:

可以通过创建一个继承自其中一个可用样式的新类来覆盖每个可用的分页样式,然后更改其参数:

class MyPagination(PageNumberPagination):
    page_size = 20
    page_size_query_param = 'page_size' 
    max_page_size = 200
    last_page_strings = ('the_end',)

这些参数(在分页官方文档中列出 )是:

PageNumberPagination

  • page_size:表示页面大小的数值。如果设置,则会覆盖 PAGE_SIZE 设置。默认值与 PAGE_SIZE 设置键的值相同。
  • page_query_param:一个字符串值,指示用于分页控件的查询参数的名称。
  • page_size_query_param:如果设置,这是一个字符串值,指示允许客户端基于每个请求设置页面大小的查询参数的名称。默认为 None,表示客户端可能无法控制请求的页面大小。
  • max_page_size:如果设置,这是一个数值,表示允许的最大请求页面大小。此属性仅在设置了 page_size_query_param 时有效。
  • last_page_strings:字符串值的列表或元组,表示可以与 page_query_param 一起使用以请求集合中最后一页的值。默认为 ('last',)
  • template:在可浏览 API 中呈现分页控件时要使用的模板的名称。可以重写以修改呈现样式,或设置为 None 以完全禁用 HTML 分页控件。默认为 rest_framework/pagination/numbers.html

LimitOffsetPagination

  • default_limit:一个数值,表示客户端在查询参数中未提供的限制。默认值与 PAGE_SIZE 设置键的值相同。
  • limit_query_param:表示 limit 查询参数名称的字符串值。默认为'limit'
  • offset_query_param:一个字符串值,表示 offset 查询参数的名称。默认为'offset'
  • max_limit:如果设置,这是一个数值,表示客户端可能请求的最大允许限制。默认为 None
  • template:与 PageNumberPagination 相同。

CursorPagination

  • page_size:与 PageNumberPagination 相同。
  • cursor_query_param:一个字符串值,表示 cursor 查询参数的名称。默认为'cursor'
  • ordering:这应该是一个字符串或字符串列表,表示将应用基于光标的分页的字段。例如:ordering = 'slug'。默认为 -created。在视图上使用 OrderingFilter 也可以覆盖此值。
  • template:与 PageNumberPagination 相同。

每班设置分页:

除了能够在全局范围内设置分页样式之外,还可以使用每个类的设置:

class MyViewSet(viewsets.GenericViewSet):
    pagination_class = LimitOffsetPagination

现在只有 MyViewSet 有一个 LimitOffsetPagination 分页。

自定义分页样式可以以相同的方式使用:

class MyViewSet(viewsets.GenericViewSet):
    pagination_class = MyPagination