You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Rest Framework的ListAPIView中获取当前分页页码?

规范获取DRF ListAPIView当前分页页码的方案

直接通过DRF分页类的内置方法get_page_number获取当前页码,这是最规范的实现方式,能避免硬编码查询参数名的耦合问题,代码修改如下:

class LatestEpisodesAPIView(ListAPIView):
    serializer_class = LatestEpisodeSerializer
    pagination_class = StandardResultsSetPagination

    def get(self, request, *args, **kwargs):
        # 初始化当前视图指定的分页器实例
        paginator = self.pagination_class()
        # 调用分页器内置方法获取当前页码,自动适配分页类定义的参数名
        current_page = paginator.get_page_number(request)
        
        res = super().get(request, *args, **kwargs)
        res.render()
        # 生成唯一缓存键
        cache.set(f"apiepisode_p_{current_page}", res, 60*5)

        return res

为什么这是规范的实现:

  • get_page_number是DRF分页类的官方方法,会自动读取你在pagination_class中配置的page_query_param(默认值为page),如果后续需要修改分页参数名(比如改成p),不需要改动这段代码。
  • 当请求未传递页码参数时,方法会返回默认值1,保证缓存键的正确性。
  • 避免了直接依赖request.query_params.get("page")的硬编码写法,符合DRF的扩展设计思路。

内容的提问来源于stack exchange,提问作者Danny2507

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:25:15