首页 > 其他分享 >DRF视图集中添加其他API--@action装饰器

DRF视图集中添加其他API--@action装饰器

时间:2022-12-18 18:00:58浏览次数:57  
标签:-- detail 视图 url API action DRF

问题:DRF视图集中若想添加其他API?

通过给视图集中的函数,添加DRF的@action()装饰器

DRF的@action装饰器,用来为函数添加路由,主要参数有:

  • methods:支持的请求方式,值为一个列表,默认为['GET']
  • detail:布尔类型,表示是否为详细资源对象(即主键是否在url中,True表示是)
  • url_path:指定url路由名称,默认为被action修饰的函数名
  • url_name:指定url名称,默认为被action修饰的函数名,内部操作用

注意:detail为必填参数,显示定义的路由优先级大于默认的

例1:detail=False

class MenuViewSet(BaseModelViewSet):
    """
    菜单管理API
    """
    queryset = Menu.objects.all()
    serializer_class = MenuSerializer

    # 获取用户菜单/菜单按钮权限API
    # detail详情大意为是否需要传pk,若传为True,反之为False
    @action(methods=['GET'], detail=False, url_path='web_router')
    def xingchen(self, request):
        return ResponseOK(msg="获取成功")

例2:detail=True

class MenuViewSet(BaseModelViewSet):
    """
    菜单管理API
    """
    queryset = Menu.objects.all()
    serializer_class = MenuSerializer
    @action(methods=['GET'], detail=True)
    def xc(self, request, pk):
        print('id', pk)
        return ResponseOK(msg="获取成功")

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:--,detail,视图,url,API,action,DRF
From: https://www.cnblogs.com/u-damowang1/p/16990699.html

相关文章

  • 【Pytest--html报告优化+增加错误截图,获取统计数据】
    一、pytest生成的原始html报告1、在我们实际工作中,环境信息不一定要在报告中详细提现,可以增减2、用例信息,默认展示的是用例的model名::用例名称,并不直观,所以我们可以增加一......
  • 浅谈入行Qt桌面端开发程序员-从毕业到上岗(1):当我们说到桌面端开发时,我们在谈论什么?
    谈谈我自己大家好,我是轩先生,是一个刚入行的Qt桌面端开发程序员。我的本科是双非一本的数学专业,22年毕业,只是部分课程与计算机之间有所交叉,其实在我毕业的时候并没有想过会......
  • 如何实现chrome谷歌浏览器多开(独立环境 独立cookie)
    由于各种各样的原因,你可能需要在一个电脑登录某个平台,比如一个电脑登录3个公众号,或者3个知乎等等。最简单的方案是,直接安装3个不同的浏览器,比如一个谷歌浏览器,一个火狐浏......
  • 【LeeCode】338. 比特位计数
    【题目描述】给你一个整数 ​​n​​ ,对于 ​​0<=i<=n​​ 中的每个 ​​i​​ ,计算其二进制表示中 ​​1​​​​ 的个数 ,返回一个长度为 ​​​n+1​​......
  • 容器与虚拟机对比
    大致对比一下容器与虚拟机的特点。对比1.隔离注:这里的隔离与否主要看使用效果,而不关注实现细节。容器虚拟机硬件隔离隔离进程隔离隔离文件系统......
  • go语言20小时从入门到精通(一、初识Go语言)
    1.1Go语言介绍1.1.1Go语言是什么2009年11月10日,Go语言正式成为开源编程语言家庭的一员。Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产......
  • 实验七-缓冲区溢出
    实验七-缓冲区溢出 实验指导书内容一、实验简介   缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的......
  • 有点乱
    我需要补一些电脑硬件方面的知识了,毕竟台式电脑要比笔记本实惠不少,而且也并不是不能满足我的需要。反思我最近是不是有点乱,提到这个我却感到很惭愧,因为理想的状况应该是有......
  • 抗阳随记
    2019年12月到2022年12月6日新十条发布的全面放开,整整3年,疫情的帷幕渐渐落地~我也很“幸运”的成了第一批中招的人,这是个有点儿头疼、眼睛疼、胳膊腿和嗓子眼都疼的故事:20......
  • 更新一波
    又决定更新了,虽然写这个博客还是各种麻烦,就像在有打火机的时代还去钻木取火一样......为什么又来更新了呢,因为此刻心情好一点吧。虽然我现在的处境并不开心...唉...想说......