ModelViewSet是封装度最高的DRF的视图类。包含了增删改查中的所有接口操作。
它继承自GenericViewSet、ListModelMixin、RetrieveModelMixin、CreateModelMixin、UpdateModelMixin、DestoryModelMixin。
使用视图集,可以将一系列逻辑相关的动作放到一个类中:
list() 提供一组数据
retrieve() 提供单个数据(详情)
create() 创建数据
update() 更新数据
destory() 删除数据
小试牛刀
mysite/urls.py
from rest_framework import routers
from rbac.views import user, menu
router = routers.SimpleRouter()
router.register(r'menu', menu.MenuViewSet, basename='menu')
router.register(r'user', user.UserViewSet, basename='user')
urlpatterns = [
path(r'api/v1/auth/manage/', include(router.urls)),
path(r'docs/', include_docs_urls(title='星辰', authentication_classes=[],permission_classes=[])),
]
rbac/views/menu.py
class MenuViewSet(ModelViewSet):
"""
菜单管理:增删改查
list: 查询
create: 新增
"""
queryset = Menu.objects.all()
serializer_class = MenuSerializer
pagination_class = MyPagination
filter_backends = (SearchFilter, OrderingFilter)
search_fields = ('name',)
ordering_fields = ('id',)
authentication_classes = []
permission_classes = []
def get_serializer_class(self):
# if self.action == 'list':
return MenuSerializer
后话:
如果有比较复杂的定制化需求,建议还是直接使用APIView