LoginSignup
5
6

More than 5 years have passed since last update.

django rest framework : method override

Last updated at Posted at 2018-07-06

Description

  • viewset の指定 method(create, updateなど) を上書きする

上書き

以下, 対応する method を上書きする

api/views.py
from rest_framework import viewsets
from rest_framework.response import Response

from api.models import User

from .serializers import UserSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all().select_related()
    serializer_class = UserSerializer

    def list(self, request):
        # GET    :  /api/users/

    def create(self, request):
        # POST   :  /api/users/

    def retrieve(self, request, pk=None):
        # GET    :  /api/users/:id/

    def update(self, request, pk=None):
        # PUT    :  /api/users/:id/

    def partial_update(self, request, pk=None):
        # PATCH  :  /api/users/:id/

    def destroy(self, request, pk=None):
        # DELETE :  /api/users/:id/

list 実装例

api/views.py
from rest_framework import viewsets
from rest_framework.response import Response
from api.models import User

from .serializers import UserSerializer


class UserViewSet(viewsets.ModelViewSet):
    """
    list:
    Return a list of all the existing users.
    """

    queryset = User.objects.all().select_related()
    serializer_class = UserSerializer

    def list(self, request):
        """
        list:
        Return a list of all the existing users.
        """

        # 全 user 情報を取得し, serialize 
        data = UserSerializer(User.objects.all(), many=True).data

        # http response として返す
        return Response(status=200, data=data)

参考

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6