definitial(self,request,*args,**kwargs):""" Runs anything that needs to occur prior to calling the method handler. """ self.format_kwarg = self.get_format_suffix(**kwargs)# Ensure that the incoming request is permitted self.perform_authentication(request) self.check_permissions(request) self.check_throttles(request)# Perform content negotiation and store the accepted info on the request neg = self.perform_content_negotiation(request) request.accepted_renderer, request.accepted_media_type = neg# Determine the API version, if versioning is in use. version, scheme = self.determine_version(request, *args, **kwargs) request.version, request.versioning_scheme = version, scheme
from rest_framework.decorators import api_view, throttle_classesfrom rest_framework.throttling import UserRateThrottleclassOncePerDayUserThrottle(UserRateThrottle): rate ='1/day'@api_view(['GET'])@throttle_classes([OncePerDayUserThrottle])defview(request):returnResponse({"message": "Hello for today! See you tomorrow!"})
classCreateAPIView(mixins.CreateModelMixin,GenericAPIView):""" Concrete view for creating a model instance. """defpost(self,request,*args,**kwargs):return self.create(request, *args, **kwargs)
ListAPIView
用于读取模型实例的集合
提供一个get方法处理
继承:GenericAPIView,ListModelMixin
classListAPIView(mixins.ListModelMixin,GenericAPIView):""" Concrete view for listing a queryset. """defget(self,request,*args,**kwargs):return self.list(request, *args, **kwargs)
RetrieveAPIView
用于读取单个模型实例
提供一个get方法处理
继承:GenericAPIView,RetrieveModelMixin
classRetrieveAPIView(mixins.RetrieveModelMixin,GenericAPIView):""" Concrete view for retrieving a model instance. """defget(self,request,*args,**kwargs):return self.retrieve(request, *args, **kwargs)
DestroyAPIView
用于删除单个模型实例
提供一个delete方法处理
继承:GenericAPIView,DestroyModelMixin
classDestroyAPIView(mixins.DestroyModelMixin,GenericAPIView):""" Concrete view for deleting a model instance. """defdelete(self,request,*args,**kwargs):return self.destroy(request, *args, **kwargs)
UpdateAPIView
用于更新单个模型实例
提供put和patch方法处理
继承:GenericAPIView,UpdateModelMixin
classUpdateAPIView(mixins.UpdateModelMixin,GenericAPIView):""" Concrete view for updating a model instance. """defput(self,request,*args,**kwargs):return self.update(request, *args, **kwargs)defpatch(self,request,*args,**kwargs):return self.partial_update(request, *args, **kwargs)
ListCreateAPIView
用于读取、创建模型实例的集合
提供get和post方法处理
继承:GenericAPIView,ListModelMixin,CreateModelMixin
classListCreateAPIView(mixins.ListModelMixin,mixins.CreateModelMixin,GenericAPIView):""" Concrete view for listing a queryset or creating a model instance. """defget(self,request,*args,**kwargs):return self.list(request, *args, **kwargs)defpost(self,request,*args,**kwargs):return self.create(request, *args, **kwargs)
classRetrieveDestroyAPIView(mixins.RetrieveModelMixin,mixins.DestroyModelMixin,GenericAPIView):""" Concrete view for retrieving or deleting a model instance. """defget(self,request,*args,**kwargs):return self.retrieve(request, *args, **kwargs)defdelete(self,request,*args,**kwargs):return self.destroy(request, *args, **kwargs)
classUserViewSet(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. """deflist(self,request):passdefcreate(self,request):passdefretrieve(self,request,pk=None):passdefupdate(self,request,pk=None):passdefpartial_update(self,request,pk=None):passdefdestroy(self,request,pk=None):pass