python - 使用django-rest-framework的一些疑惑

 喵喵的诱惑_204 发布于 2022-10-27 14:09

我想将blog转为前后分离的模式,以前的页码使用Paginator分页后带的方法实现的

可是现在没有办法将这些方法传出去了
我想在serializers的实例化后再往这个instance塞数据,请问怎么做呢?
贴上现有的代码

# serializers.py
class ArticleModelSerializer(serializers.ModelSerializer):
    detail_url = serializers.SerializerMethodField()
    class Meta:
        model = Article
        fields = ('id', 'header', 'content', 'put_time', 'tag', 'click_rate', 'detail_url')

    def get_detail_url(self, obj):
        return reverse('detail', args=[obj.id, ''])

问题核心在下面这段代码中

# views.py
class ArticlePage(APIView):

    def get_object(self, page_num):
        articles = Article.objects.all()
        paginator = Paginator(articles, 10)
        try:
            articles = paginator.page(page_num)
            return articles
        except EmptyPage:
            return paginator.page(paginator.num_pages)
        except PageNotAnInteger:
            return paginator.page(1)

    def get(self, request):
        articles = self.get_object(page_num=request.GET.get('page'))
        # 在这里的serializer塞入像总页数之类的数据,方便前端使用
        serializer = ArticleModelSerializer(articles, many=True)
        return Response(serializer.data)
1 个回答
  • rest framework 有个自动分页功能 但是只有在使用通用视图或viewsets时,才会自动执行分页,类视图不行的。这个是关于分页的api文档 pagination

    2022-10-28 12:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有