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

