장고 REST 프레임 워크의 뷰 요약
10579 단어 django-rest-framework파이썬장고
1. Function based Views
request
를 받고 Response
를 반환하는 함수에 @api_view
데코레이터를 사용하여 뷰를 정의합니다.
from rest_framework.decorators import api_view
@api_view(['GET', 'POST'])
def hello_world(request):
if request.method == 'POST':
return Response({"message": "Got some data!", "data": request.data})
return Response({"message": "Hello, world!"})
@permission_classes(...)
및 @renderer_classes(...)
와 같은 데코레이터를 사용하여 설정을 추가 할 수 있습니다.
2. Class based Views
APIView
를 상속받은 클래스로 뷰를 정의합니다.
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import authentication, permissions
from django.contrib.auth.models import User
class ListUsers(APIView):
authentication_classes = [authentication.TokenAuthentication]
permission_classes = [permissions.IsAdminUser]
def get(self, request, format=None):
usernames = [user.username for user in User.objects.all()]
return Response(usernames)
.get()
, .post()
등을 핸들러 메소드라고 부른다.
전송 된 요청은 설정된 권한 등의 검사를 통과 한 후 처리기 메서드로 전송됩니다.
3. Generic Views
여러 가지 제공된 범용 (제네릭) 뷰를 상속받은 클래스로 정의합니다.
from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
from rest_framework.permissions import IsAdminUser
# 作成と一覧取得ができるビュー
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAdminUser]
범용 뷰는 queryset
를 설정하고 연결하기 때문에 기본적인 동작을 시키는 경우는 간략화하여 쓸 수 있다.
또한, 액션 메소드 (후술) 등을 오버라이드 (override)하여 동작을 확장 할 수도있다.
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAdminUser]
def list(self, request):# アクションメソッド
queryset = self.get_queryset()
serializer = UserSerializer(queryset, many=True)
return Response(serializer.data)
범용 뷰는 공통의 기본 클래스 GenericAPIView
(후술)와 기본적인 동작을 제공한다 Mixin
(후술)를 1 개 이상 상속하고있다. 각 Mixin이 제공하는 동작은 나중에 설명합니다.
일반 뷰
상속 중인 Mixin
CreateAPIView
CreateModelMixin
DestroyAPIView
DestroyModelMixin
ListAPIView
ListModelMixin
ListCreateAPIView
ListModelMixin, CreateModelMixin
RetrieveAPIView
RetrieveModelMixin
RetrieveDestroyAPIView
RetrieveModelMixin, DestroyModelMixin
RetrieveUpdateAPIView
RetrieveModelMixin, UpdateModelMixin
RetrieveUpdateDestroyAPIView
RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
UpdateAPIView
UpdateModelMixin
GenericAPIView
APIView
를 확장하고 자주 사용되는 동작을 추가 한 클래스. 모든 범용 뷰의 기저.
queryset
또는 .get_queryset(self)
에서 사용할 쿼리 세트를 설정할 수 있습니다..perform_create(self, serializer)
, .perform_update(self, serializer)
및 .perform_destroy(self, instance)
는 객체를 저장하고 삭제할 때의 동작을 재정의 할 수 있습니다. 이들은 Mixin의 액션 메소드에서 호출됩니다.
Mixin
기본적인 뷰의 동작을 실시하기 위한 액션 메소드를 제공하는 클래스.
Mixin
액션 메소드
동작
ListModelMixin
.list()
일람 취득
CreateModelMixin
.create()
만들기
RetrieveModelMixin
.retrieve()
취득(단체)
UpdateModelMixin
.update().partial_update()
업데이트 부분 업데이트
DestroyModelMixin
.destroy()
삭제
4. Viewsets
viewsets.ModelViewSet
등을 상속받은 클래스로 정의합니다.
from django.contrib.auth.models import User
from myapps.serializers import UserSerializer
from rest_framework import viewsets
from rest_framework.response import Response
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
ModelViewSet
는 모든 Mixin이 함께 된 클래스 (실제 모든 Mixin을 상속 함)로, 이것만으로 취득, 작성,리스트 취득, 갱신, 삭제가 가능해진다.
뷰셋은 액션 메소드를 제공하기 때문에 (핸들러 메소드가 아님), 기능을 확장하려는 경우 액션 메소드를 겹쳐 씁니다.
Viewsets
설명
ViewSet
APIView를 상속. 액션 메소드를 제공하지 않고, 사용하는 경우는 명시적으로 오버라이드(override) 할 필요가 있다.
GenericViewSet
GenericAPIView를 상속. 쿼리 세트 등을 설정할 수 있습니다. 명시 적으로 액션 메소드를 재정의하거나 Mixin과 함께 상속합니다.
ModelViewSet
GenericViewSet와 각 Mixin을 상속. 다양한 액션 메소드를 제공한다.
ReadOnlyModelViewSet
GenericViewSet과 RetrieveModelMixin, ListModelMixin을 상속. 취득과리스트 취득만을 제공한다.
각 클래스의 상속 관계
참고
이 기사의 내용과 샘플 코드는 다음을 참조하고 인용했다.
Reference
이 문제에 관하여(장고 REST 프레임 워크의 뷰 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/huma17ax/items/f5a8302b055eca8e0e77
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from rest_framework.decorators import api_view
@api_view(['GET', 'POST'])
def hello_world(request):
if request.method == 'POST':
return Response({"message": "Got some data!", "data": request.data})
return Response({"message": "Hello, world!"})
APIView
를 상속받은 클래스로 뷰를 정의합니다.from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import authentication, permissions
from django.contrib.auth.models import User
class ListUsers(APIView):
authentication_classes = [authentication.TokenAuthentication]
permission_classes = [permissions.IsAdminUser]
def get(self, request, format=None):
usernames = [user.username for user in User.objects.all()]
return Response(usernames)
.get()
, .post()
등을 핸들러 메소드라고 부른다.전송 된 요청은 설정된 권한 등의 검사를 통과 한 후 처리기 메서드로 전송됩니다.
3. Generic Views
여러 가지 제공된 범용 (제네릭) 뷰를 상속받은 클래스로 정의합니다.
from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
from rest_framework.permissions import IsAdminUser
# 作成と一覧取得ができるビュー
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAdminUser]
범용 뷰는 queryset
를 설정하고 연결하기 때문에 기본적인 동작을 시키는 경우는 간략화하여 쓸 수 있다.
또한, 액션 메소드 (후술) 등을 오버라이드 (override)하여 동작을 확장 할 수도있다.
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAdminUser]
def list(self, request):# アクションメソッド
queryset = self.get_queryset()
serializer = UserSerializer(queryset, many=True)
return Response(serializer.data)
범용 뷰는 공통의 기본 클래스 GenericAPIView
(후술)와 기본적인 동작을 제공한다 Mixin
(후술)를 1 개 이상 상속하고있다. 각 Mixin이 제공하는 동작은 나중에 설명합니다.
일반 뷰
상속 중인 Mixin
CreateAPIView
CreateModelMixin
DestroyAPIView
DestroyModelMixin
ListAPIView
ListModelMixin
ListCreateAPIView
ListModelMixin, CreateModelMixin
RetrieveAPIView
RetrieveModelMixin
RetrieveDestroyAPIView
RetrieveModelMixin, DestroyModelMixin
RetrieveUpdateAPIView
RetrieveModelMixin, UpdateModelMixin
RetrieveUpdateDestroyAPIView
RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
UpdateAPIView
UpdateModelMixin
GenericAPIView
APIView
를 확장하고 자주 사용되는 동작을 추가 한 클래스. 모든 범용 뷰의 기저.
queryset
또는 .get_queryset(self)
에서 사용할 쿼리 세트를 설정할 수 있습니다..perform_create(self, serializer)
, .perform_update(self, serializer)
및 .perform_destroy(self, instance)
는 객체를 저장하고 삭제할 때의 동작을 재정의 할 수 있습니다. 이들은 Mixin의 액션 메소드에서 호출됩니다.
Mixin
기본적인 뷰의 동작을 실시하기 위한 액션 메소드를 제공하는 클래스.
Mixin
액션 메소드
동작
ListModelMixin
.list()
일람 취득
CreateModelMixin
.create()
만들기
RetrieveModelMixin
.retrieve()
취득(단체)
UpdateModelMixin
.update().partial_update()
업데이트 부분 업데이트
DestroyModelMixin
.destroy()
삭제
4. Viewsets
viewsets.ModelViewSet
등을 상속받은 클래스로 정의합니다.
from django.contrib.auth.models import User
from myapps.serializers import UserSerializer
from rest_framework import viewsets
from rest_framework.response import Response
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
ModelViewSet
는 모든 Mixin이 함께 된 클래스 (실제 모든 Mixin을 상속 함)로, 이것만으로 취득, 작성,리스트 취득, 갱신, 삭제가 가능해진다.
뷰셋은 액션 메소드를 제공하기 때문에 (핸들러 메소드가 아님), 기능을 확장하려는 경우 액션 메소드를 겹쳐 씁니다.
Viewsets
설명
ViewSet
APIView를 상속. 액션 메소드를 제공하지 않고, 사용하는 경우는 명시적으로 오버라이드(override) 할 필요가 있다.
GenericViewSet
GenericAPIView를 상속. 쿼리 세트 등을 설정할 수 있습니다. 명시 적으로 액션 메소드를 재정의하거나 Mixin과 함께 상속합니다.
ModelViewSet
GenericViewSet와 각 Mixin을 상속. 다양한 액션 메소드를 제공한다.
ReadOnlyModelViewSet
GenericViewSet과 RetrieveModelMixin, ListModelMixin을 상속. 취득과리스트 취득만을 제공한다.
각 클래스의 상속 관계
참고
이 기사의 내용과 샘플 코드는 다음을 참조하고 인용했다.
Reference
이 문제에 관하여(장고 REST 프레임 워크의 뷰 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/huma17ax/items/f5a8302b055eca8e0e77
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
from rest_framework.permissions import IsAdminUser
# 作成と一覧取得ができるビュー
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAdminUser]
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAdminUser]
def list(self, request):# アクションメソッド
queryset = self.get_queryset()
serializer = UserSerializer(queryset, many=True)
return Response(serializer.data)
viewsets.ModelViewSet
등을 상속받은 클래스로 정의합니다.from django.contrib.auth.models import User
from myapps.serializers import UserSerializer
from rest_framework import viewsets
from rest_framework.response import Response
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
ModelViewSet
는 모든 Mixin이 함께 된 클래스 (실제 모든 Mixin을 상속 함)로, 이것만으로 취득, 작성,리스트 취득, 갱신, 삭제가 가능해진다.뷰셋은 액션 메소드를 제공하기 때문에 (핸들러 메소드가 아님), 기능을 확장하려는 경우 액션 메소드를 겹쳐 씁니다.
Viewsets
설명
ViewSet
APIView를 상속. 액션 메소드를 제공하지 않고, 사용하는 경우는 명시적으로 오버라이드(override) 할 필요가 있다.
GenericViewSet
GenericAPIView를 상속. 쿼리 세트 등을 설정할 수 있습니다. 명시 적으로 액션 메소드를 재정의하거나 Mixin과 함께 상속합니다.
ModelViewSet
GenericViewSet와 각 Mixin을 상속. 다양한 액션 메소드를 제공한다.
ReadOnlyModelViewSet
GenericViewSet과 RetrieveModelMixin, ListModelMixin을 상속. 취득과리스트 취득만을 제공한다.
각 클래스의 상속 관계
참고
이 기사의 내용과 샘플 코드는 다음을 참조하고 인용했다.
Reference
이 문제에 관하여(장고 REST 프레임 워크의 뷰 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/huma17ax/items/f5a8302b055eca8e0e77
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 기사의 내용과 샘플 코드는 다음을 참조하고 인용했다.
Reference
이 문제에 관하여(장고 REST 프레임 워크의 뷰 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/huma17ax/items/f5a8302b055eca8e0e77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)