Django rest framework使用ModelViewSet视图集

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

访问api docs看下效果
Django rest framework使用ModelViewSet视图集_第1张图片

后话:
如果有比较复杂的定制化需求,建议还是直接使用APIView

你可能感兴趣的:(django,Python)