Django REST framework基础:视图和路由

你。 提交于 2019-12-04 04:55:10
在原来modelserializers基础上进行了一次封装方便了使用# author


class AuthorModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = models.Author
        fields = "__all__"


from rest_framework import mixins
from rest_framework import generics


class AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers

    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 AuthorDetaiView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, mixins.UpdateModelMixin,
                      generics.GenericAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers

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

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

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

使用通用的基于类的视图(封装第三次减少了代码量)

# author
class AuthorModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = models.Author
        fields = "__all__"


from rest_framework import mixins
from rest_framework import generics


# 封装了3层
class AuthorView(generics.ListCreateAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers


# 封装了3层
class AuthorDetaiView(generics.RetrieveUpdateDestroyAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers使用视图集viewsets.ModelViewSet原理:

 


 

 


# authorclass AuthorModelSerializers(serializers.ModelSerializer):    class Meta:        model = models.Author        fields = "__all__"from rest_framework import mixinsfrom rest_framework import genericsclass AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):    # queryset serializer 这两个方法一定要定义成这个不然取不到值queryset = models.Author.objects.all()    serializer_class = AuthorModelSerializers    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 AuthorDetaiView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, mixins.UpdateModelMixin,generics.GenericAPIView):    # queryset serializer 这两个方法一定要定义成这个不然取不到值queryset = models.Author.objects.all()    serializer_class = AuthorModelSerializers    def get(self, request, *args, **kwargs):        return self.retrieve(request, *args, **kwargs)    def delete(self,request,*args,**kwargs):        return self.destroy(request,*args,**kwargs)    def put(self,request,*args,**kwargs):        return self.update(request,*args,**kwargs)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!