9.2.动态设置serializer和permission获取用户信息

apps/users/views.py

from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin
from rest_framework import viewsets
from rest_framework import permissions
from users.serializers import UserRegSerializer, UserDetailSerializer


class UserViewSet(CreateModelMixin, RetrieveModelMixin, viewsets.GenericViewSet):

    # 动态设置permission
    def get_permissions(self):
        if self.action == "create":
            return []
        elif self.action == "retrieve":
            return [permissions.IsAuthenticated()]
        return []

    # 动态设置serializer
    def get_serializer_class(self):
        if self.action == "create":
            return UserRegSerializer
        elif self.action == "retrieve":
            return UserDetailSerializer
        return UserDetailSerializer

    # 返回当前用户信息
    def get_object(self):
        return self.request.user

apps/users/serializers.py

Last updated

Was this helpful?