先看视图对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方法中调用
网友评论