REST framework组件-视图

mixin类编写视图

class BookViewSet(mixins.ListModelMixin,
                  mixins.CreateModelMixin,
                  generics.GenericAPIView):

    queryset = Book.objects.all()
    serializer_class = BookSerializers

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)



class BookDetailViewSet(mixins.RetrieveModelMixin,
                    mixins.UpdateModelMixin,
                    mixins.DestroyModelMixin,
                    generics.GenericAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializers

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)

使用通用的基于类的视图

from rest_framework import mixins
from rest_framework import generics

class BookViewSet(generics.ListCreateAPIView):

    queryset = Book.objects.all()
    serializer_class = BookSerializers

class BookDetailViewSet(generics.RetrieveUpdateDestroyAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializers

viewsets.ModelViewSet

url.py:

    path('books/', views.BookViewSet.as_view({'get': 'list', 'post': 'create'})),
    re_path(r'^books/(?P<pk>\d+)$', views.BookViewSet.as_view({
        'get':'retrieve',
        'put': 'update',
        'delete': 'destroy'}))

或者

from rest_framework import routers

routers = routers.DefaultRouter()
routers.register("books", views.BookViewSet)

urlpatterns = [
    path('', include(routers.urls))
]

views.py

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializers

 

posted @ 2018-09-02 13:41  gloomysun  阅读(103)  评论(0编辑  收藏  举报