zoukankan      html  css  js  c++  java
  • Django中ModelViewSet的应用

    ModelViewSet源码

    class ModelViewSet(mixins.CreateModelMixin,
                       mixins.RetrieveModelMixin,
                       mixins.UpdateModelMixin,
                       mixins.DestroyModelMixin,
                       mixins.ListModelMixin,
                       GenericViewSet):
        """
        A viewset that provides default `create()`, `retrieve()`, `update()`,
        `partial_update()`, `destroy()` and `list()` actions.
        """
        pass

    具体使用

    class UserViewSet(ModelViewSet):
    
        fields = (
            swagger_doc(name="Authorization", description='用户token', location='header', required=False),
        )
    
        # 认证
        # authentication_classes = [Authentication, ]
        # queryset 和 serializer_class  必须指定
        queryset = User.objects.all()
        serializer_class = CreateUserSerializer
        pagination_class = StandardResultsSetPagination
    
        def retrieve(self, request, pk=None):
            """ 用户详情 """
            # 获取实例
            user = self.get_object()
            # 序列化
            serializer = self.get_serializer(user)
            return success_response(serializer.data)
    
        def create(self, request, *args, **kwargs):
            """ 创建用户 """
    
            serializer = self.get_serializer(data=request.data)
            # save 前必须先调用 is_valid()
            serializer.is_valid(raise_exception=True)
            serializer.save()
    
            return success_response(serializer.data)
    
        def update(self, request: Request, *args, **kwargs):
            """ 更新用户信息 """
    
        def destroy(self, request: Request, *args, **kwargs):
            """ 删除用户 """
    
            return success_response()
    
        def list(self, request: Request, *args, **kwargs):
            """ 获取用户列表 """
    
            return success_response()

    路由

    from django.conf.urls import url, include
    # 定义路由
    from rest_framework.routers import SimpleRouter
    
    from apps.user import user_views
    
    router = SimpleRouter()
    
    router.register(r'test-user', user_views.UserViewSet, base_name='user')

    其他用法

        @list_route(methods=('post',), permission_classes=(permissions.IsAuthenticated,))
        def chate(self, request):
      '
    base_url/users/chate/'
         pass
        @list_route(methods=('get',), permission_classes=(permissions.IsAuthenticated,))
        def chat_current(self, request):
         
    'base_url/users/chate_current/'
         pass
  • 相关阅读:
    Struts2概述
    Oracle Multitenant Environment (二) Purpose
    Oracle Multitenant Environment (一) About
    oracle 12c之前用sequence 和 trigger来生成自动增长的列
    EPEL reporsitory
    optimizer_index_cost_adj
    oracle rac cache fusion
    一个oracle bug
    django book chapter 2
    linux 中文乱码问题
  • 原文地址:https://www.cnblogs.com/zhaijihai/p/11446088.html
Copyright © 2011-2022 走看看