rest-framework权限中has_permission和has_object_permissions

先看视图对queryset的处理

在GenericAPIView中,有以下方法get_queryset,filter_queryset, get_object, 其中:
get_queryset就是获取当前的查询集,
filter_queryset根据filter_backends进行过滤,
get_object是根据参数获取过滤集的单个对象:调用的是get_object_or_404方法, 不需要提供查询集,因为他使用的是过滤集,本质是QuerySet对象的get()方法

在ListModelMixin中,也就是查询多个的时候,要获取查询集,使用的是filter_queryset,返回

在RetrieveModelMixin中,查询单个对象,使用的是get_object方法,返回


区别

has_permission在请求进来的时候就开始了属于DRF的三大认证,返回True就能访问,False就禁止访问
has_object_permissions是对某个对象的访问权限,默认是True


可以根据request对象和obj对象判断:该对象是否可以返回给该request请求,返回True或者False。

  • 调用的时机:在get_object方法中调用


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。