detail=True表示这个动作是针对单个实例的。例如,你可以创建一个标记用户为活跃的动作: fromrest_framework.decoratorsimportactionfromrest_framework.responseimportResponsefromrest_frameworkimportviewsetsclassUserViewSet(viewsets.ModelViewSet): queryset=User.objects.all() serializer_class=UserSerializer @action(detail...
interfaces= InterfacesNamesModelSerializer(many=True, read_only=True, label='从表id', help_text='从表id')classMeta: model=Projects fields= ('id','interfaces') 2.自定义action方法 @action(methods=['get'], detail=True)definterfaces(self, request, *args, **kwargs): qs=self.get_object() ...
如果是基于 view 的 action 需要在 view 上定义 schema 属性. Python 代码语言:javascript 代码运行次数:0 运行 AI代码解释 class XXXXXXViewSet(viewsets.ModelViewSet): schema = CustomViewSchema() @action(methods=['post'], detail=True, url_path='set-xy') def set_xy(self, request, pk=None): ...
@action(detail=False, methods=['get', ])detail: 当detail=True 时,方法针对单个实例。生成的 URL 会在实例的 URL 后添加方法名称。例子:127.0.0.1:8000/admin/cm 当detail=False 时,方法针对全部实例。生成的 URL 会在设备的全局 URL 后添加方法名称。例子:127.0.0.1:8000/admin/cm methods: 指定API 可...
需要给对应的方法添加action装饰器。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 # detail为False 表示路径名格式应该为 books/latest/@action(methods=['get'],detail=False)deflatest(self,request):""" 需要提取参数detail改为True,不需要提取参数的时候改为False ...
@action(methods=['put'],detail=True)def read(self, request, pk):...其中:@action()action装饰器可以接收两个参数:methods: 声明该action对应的请求⽅式,列表传递 detail: 声明该action的路径是否与单⼀资源对应,及是否是xxx/<pk>/action⽅法名/ True 表⽰路径格式是xxx/<pk>/action⽅法名/ ...
detail: 声明该 action 的路径是否与单一资源对应,布尔值 AI检测代码解析 # True : 表示不是单一资源路径(可以用来匹配一条数据) : 例:127.0.0.1:8000/<pk>/[action方法名]/ # False : 表示单一的资源路径(可以匹配多条数据) : 例:127.0.0.1:8000/[action方法名]/ ...
@action(methods=['GET','POST'],detail=True) def get_1(self,request,pk): print(pk) book=self.get_queryset()[:2] # 从0开始截取一条 ser=self.get_serializer(book,many=True) return Response(ser.data) # 装饰器,放在被装饰的函数上方,method:请求方式,detail:是否带pk ...
是否在路由中生成pk值路由参数 True是带pk的 # 参数3:字符串, drf默认会把当前视图方法名补充到路由地址上,如果要修改这段地址,则可以通过当前参数自定义 @action(methods=['POST', 'GET'], detail=True, url_path="student_login") def login(self,request): # 如果要接收地址路由的参数,则需要填写pk形参...
() serializer_class = CartSerializer @action(detail=True, methods=['post']) def add_product(self, request, pk=None): cart = self.get_object() product_id = request.data.get('product_id') quantity = request.data.get('quantity', 1) try: product = Product.objects.get(id=product_id) ...