通过基类视图,能够实现很简单,很有针对性的操作,但有时候,业务确实需要增删改查的功能都有。DRF提供了视图集,即一个视图,可以实现所有增删改查的功能。但由于url是否带参数,需要设置两个路由,即同样的接口名,一个带参一个不带参。
在视图集中,需要相应的功能,则需要继承mixins的对应扩展类。
打开Applications/Exampls/views/Schools.py文件,前面增加一个引用包,后面增加一个视图集类。
from rest_framework.viewsets import GenericViewSet. class SchoolViewSet(GenericViewSet, mixins.ListModelMixin, mixins.CreateModelMixin, mixins.UpdateModelMixin, mixins.RetrieveModelMixin, mixins.DestroyModelMixin): queryset = Schools.objects.all() serializer_class = SchoolsSerializer
配置url增加两个相同接口名的路由:
path('SchoolViewSet/', SchoolViewSet.as_view({'get': 'list', 'post': 'create'})), path('SchoolViewSet/<int:pk>/', SchoolViewSet.as_view({'get': 'retrieve','put':'update','delete':'destroy'})),
运行测试接口!发现,几行代码,就达成了增删改查的所有功能!