---
slug: "django-rest-framework-の-viewset-を手動で動かしてシリアライズ済みデータを取得する"
title: "Django Rest Framework の Viewset を手動で動かして、シリアライズ済みデータを取得する"
description: "APIView の Python コードの紹介。"
url: "https://www.ytyng.com/blog/django-rest-framework-の-viewset-を手動で動かしてシリアライズ済みデータを取得する"
publish_date: "2020-05-19T06:34:41Z"
created: "2020-05-19T06:34:41Z"
updated: "2026-02-26T20:09:37.960Z"
categories: ["Django"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/c8bac517c934435a8291ff0686fb95f2.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# Django Rest Framework の Viewset を手動で動かして、シリアライズ済みデータを取得する

<pre>from rest_framework.request import Request as DRFRequest<br /><br />class HomeDataView(APIView):<br /><br />    def get(self, request, *args, **kwargs):<br />        data = _inner_view(request)<br />        ...<br /><br />    def _inner_view(drf_request):<br />        dr = DRFRequest(drf_request._request)<br />        dr.query_params._mutable = True<br />        dr.query_params['page_size'] = 5<br />        dr.query_params['intellectualproperty'] = ip_id<br />        vs = ProductViewSet(request=dr, action='list')<br />        vs.initial(dr)<br />        return vs.list(ds).data<br /><br /><br /></pre>
<pre>    # QuerySet を独自に作って処理したい場合<br />    def _inner_view():<br />        queryset = Schedule.objects.filter(...)<br />        paginator = ScheduleViewSet.pagination_class()<br />        page = paginator.paginate_queryset(queryset, self.request)<br />        serializer = ScheduleViewSet.serializer_class(page, many=True)<br />        response = paginator.get_paginated_response(serializer.data)<br />        return response.data</pre>
