标题的问题 碰到的情况 主要就是 遇到 多个 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
网友评论