20
2020
02

rest framework 视图你都用过哪些基类?

a. 继承 APIView

                这个类属于rest framework中顶层类,内部帮助我们实现了只是基本功能:认证、权限、频率控制,但凡是数据库、分页等操作都需要手动去完成,比较原始。

                

            

            

               class GenericAPIView(APIView)

                    

                    def post(...):

                        pass 

                    

                    

                    

            b. 继承 GenericViewSet(ViewSetMixin, generics.GenericAPIView)

                如果继承它之后,路由中的as_view需要填写对应关系    .as_view({'get':'list','post':'create'})

                在内部也帮助我们提供了一些方便的方法:

                    - get_queryset

                    - get_object

                    - get_serializer

                

                注意:要设置queryset字段,否则会跑出断言的异常。

                # 只提供增加功能

                class TestView(GenericViewSet):

                    serializer_class = XXXXXXX


                    def create(self,*args,**kwargs):

                        pass # 获取数据并对数据进行操作

        

                

            c. 继承 

                    - ModelViewSet

                    - mixins.CreateModelMixin,GenericViewSet

                    - mixins.CreateModelMixin,DestroyModelMixin,GenericViewSet

            

                对数据库和分页等操作不用我们在编写,只需要继承相关类即可。

                

                示例:只提供增加功能

                class TestView(mixins.CreateModelMixin,GenericViewSet):

                    serializer_class = XXXXXXX

        

        

            类的继承关系

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。