django-restful:动态设置serializer和 perimission获取用户信息

标题的问题 碰到的情况 主要就是 遇到 多个 serializer 如何 分配
和 不同情况 使用不同的perimission

假如 我们 在一个 viewset 中 即有 注册 功能 和 查看 用户个人信息 两个 接口 同样查看个人信息 肯定需要登录验证,而 注册 不需要 所以 不能直接设置 peimission_class 来配置

#我们需要继承 get_permissions方法  他是  在 APIView 这个类里面 可以自己去 查
    def get_permissions(self):
        if self.action == 'retrieve':    #这里的 action 只有使用了 viewset才有
            return [IsAuthenticated()]
        elif self.action == 'create':
            return []

        return []

同理 我们 注册 和 查看个人信息 使用的 serializer 也是不同的 我们 同样不能使用 serializer_class

#他在 viewset  generics 中
    def get_serializer_class(self):
        if self.action == 'retrieve':
            return UserDetailSerializer
        elif self.action == 'create':
            return UserRegSerializer

        return UserRegSerializer

你可能感兴趣的:(django-restful:动态设置serializer和 perimission获取用户信息)