Django rest_freamwork 视图

mixins

from rest_framework import mixins
from rest_framework import generics

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

#generics.ListCreateAPIView等同于以下三个类   mixins.ListModelMixin,mixins.CreateModelMixin,generics.GenericAPIView,下面的方法类似
class BookViewSet(generics.ListCreateAPIView):

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

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

class PublishViewSet(generics.ListCreateAPIView):

	queryset = Publish.objects.all()
 	serializer_class = PublshSerializers

class PublishDetailViewSet(generics.RetrieveUpdateDestroyAPIView):
 	queryset = Publish.objects.all()
 	serializer_class = PublshSerializers

viewsets.ModelViewSet

viewsets.ModelViewSet等同于generics.ListCreateAPIView,generics.RetrieveUpdateDestroyAPIView两个方法的集合

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

  urls.py

  url(r'^books/$', views.BookViewSet.as_view({"get":"list","post":"create"}),name="book_list"),
    url(r'^books/(?P<pk>\d+)$', views.BookViewSet.as\_view({
                'get': 'retrieve',
                'put': 'update',
                'patch': 'partial_update',
                'delete': 'destroy'
            }),name="book_detail"),

Django rest_freamwork 视图
http://www.jcwit.com/article/171/
作者
Carlos
发布于
2018年7月5日
许可协议