django 각종view 계승 방식
3801 단어 django
1. APIVIEW
계승djangoview, 클래스 기반 보기, 구별 및 방법 기반 보기
from rest_framework.views import APIView
from rest_framework.response import Response
from django.contrib.auth.models import User
class ListUsers(APIView):
"""
View to list all users in the system.
* Requires token authentication.
* Only admin users are able to access this view.
"""
def get(self, request, format=None):
"""
Return a list of all users.
"""
usernames = [user.username for user in User.objects.all()]
return Response(usernames)
def put((self, request, format=None):
pass
2. GenericAPIView
APIVIEW에서 상속되며, APIVIew에서 상속되며, 목록 보기와 상세 보기에 사용할 수 있는 일반적인 지원 방법이 추가되었습니다.일반적으로 한 개 이상의 Mixin 확장 클래스와 함께 사용 가능
하위 클래스:.CreateAPIView . ListAPIView . RetrieveAPIView . DestroyAPIView . UpdateAPIView …
정의된 속성을 지원합니다.
목록 보기와 상세 보기 통용queryset 목록 보기의 조회집serializerclass 보기에 사용되는 서열화기
from rest_framework.mixins import ListModelMixin
from django_filters.rest_framework import DjangoFilterBackend
class LargeResultsSetPagination(PageNumberPagination):
page_size = 1000
page_size_query_param = 'page_size'
max_page_size = 10000
class BookView(ListModelMixin,mixins.CreateModelMixin, GenericAPIView):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
filter_backends = filter_backends = (DjangoFilterBackend,)
filter_fields = ('category', 'in_stock')
#
search_fields = ('username', 'email')
#
pagination_class = LargeResultsSetPagination
def get(self, request):
return self.list(request)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
---------------------------------------------------------
url(r"books/$",views.BookView.as_view()),
3. Mixins
class BookDetailView(RetrieveModelMixin, GenericAPIView):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
def get(self, request, pk):
return self.retrieve(request)
4.viewset ViewSet 보기 집합 클래스는 get(),post() 등의 방법을 실현하지 않고 list(),create() 등 동작을 as 로 실행합니다view
class UserViewSet(viewsets.ViewSet):
"""
Example empty viewset demonstrating the standard
actions that will be handled by a router class.
If you're using format suffixes, make sure to also include
the `format=None` keyword argument for each action.
"""
def list(self, request):
pass
def create(self, request):
pass
def retrieve(self, request, pk=None):
pass
def update(self, request, pk=None):
pass
def partial_update(self, request, pk=None):
pass
def destroy(self, request, pk=None):
pass
----------------------------------
url
user_list = UserViewSet.as_view({'get': 'list'})
user_detail = UserViewSet.as_view({'get': 'retrieve'})
from myapp.views import UserViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'users', UserViewSet, base_name='user')
urlpatterns = router.urls
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.