def has_object_permission(self, request, view, obj): # 重写BasePermission的方法 """ 所有的request请求都有读权限,因此一律允许GET/HEAD/OPTIONS方法 如果用户是自己,可以修改 :param request: :param view: :param obj: :return: bool """ if request.method in permissions.SAFE_METHODS: return True #...
get_queryset():获取要序列化的数据 get_object():根据条件获取对象 get_serializer():获取序列化类 CBV使用(第一层) fromrest_framework.genericsimportGenericAPIView# 查询所有数据、添加数据接口classBookView(GenericAPIView):"""重写属性"""# 数据库数据queryset = models.Book.objects.all()# 序列化类serial...
get_object() user_ser = self.get_serializer(instance=user_obj,data=request.data) user_ser.is_valid(raise_exception=True) result = {"code": 200, "msg": "update success"} return Response(result) def delete(self,request,id=None): user_obj = self.get_object() user_obj.delete() result...
defget_serializer(self,*args,**kwargs):serializer_cls=self.get_serializer_class()returnserializer_cls(*args,**kwargs)defget_queryset(self):returnself.queryset.all()defget_object(self):#从视图所使用的查询集中获取指定的对象,默认根据pk进行查询 # 获取当前视图所使用的查询集 query_set=self.get_...
在通过get_object()获取具体对象时,会进行对象访问权限的判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户(默认的) IsAuthenticated仅通过认证的用户 IsAdminUser仅管理员用户 IsAuthenticatedOrReadOnly认证的用户可以完全操作,否则只能get读取 5.1使用 ...
在通过get_object()获取具体对象时,会进行对象访问权限的判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户(默认的) IsAuthenticated仅通过认证的用户 IsAdminUser仅管理员用户 IsAuthenticatedOrReadOnly认证的用户可以完全操作,否则只能get读取 5.1使用 ...
get_queryset获取当前视图所使用的查询集。 get_object从视图所使用的查询集中查询指定的对象,默认根据pk(查询)进行查询。 其他功能: a)过滤 b)分页 补充知识点: 查询的时候我们想不根据主键pk查询,而是根据我们的需求查,那么可以根据修改lookup_field(值改为我们要查询的字段的名称)的值来解决需求。
在通过get_object()获取具体对象时,会进行模型对象访问权限的判断 同样可以在配置文件中全局设置默认的权限管理类,如 才能被drf识别 REST_FRAMEWORK = { ... # 权限[全局配置,所有的视图都会被影响到] 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', # 已经登录认证的用户才能访问...
def get(self, request, pk): # 代替 book_obj = models.Book.objects.filter(id=pk).first() book_obj = self.get_object() # 得到一个数据对象 # 代替 book_ser = BookSerializers(book_obj) book_ser = self.get_serializer(book_obj) ...
GenericAPIView继承APIView,在APIView的基础上又增加了一些功能。例如:get_queryset、get_object等 实际在开发中一般不会直接继承它,他更多的是担任中间人的角色,为子类提供公共功能。 2.URL编写方式为: fromdjango.urlsimportpath,re_path,includefromapp01importviewsurlpatterns=[path('api/users/',views.UserView....