python - 使用django-rest-framework的一些疑惑
黄舟
黄舟 2017-04-18 09:49:48
0
1
305

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

<p class="ui secondary menu">
    {% if articles.has_previous %}
        <a href="?page=1" class="item">
            <i class="angle double left icon"></i>
        </a>
        <a href="?page={{ articles.previous_page_number }}" class="item">
            <i class="angle left icon"></i>
        </a>
    {% else %}
        <a href="#" class="disabled item">
            <i class="disabled angle left icon"></i>
        </a>
    {% endif %}
    {% for i in paginator.page_range|range:articles.number %}
        {% if articles.number == i %}
            <a href="?page={{ i }}" class="active item">{{ i }}</a>
        {% else %}
            <a href="?page={{ i }}" class="item">{{ i }}</a>
        {% endif %}
    {% endfor %}
    {% if articles.has_next %}
        <a href="?page={{ articles.next_page_number }}" class="item">
            <i class="angle right icon"></i>
        </a>
        <a href="?page={{ paginator.num_pages }}" class="item">
            <i class="angle double right icon"></i>
        </a>
    {% else %}
        <a href="#" class="disabled item">
            <i class="disabled angle right icon"></i>
        </a>
    {% endif %}
</p>

可是现在没有办法将这些方法传出去了
我想在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)
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!